【发布时间】:2018-12-12 12:09:35
【问题描述】:
我在 MySQL 中有两个查询基本相同,它们之间的唯一区别是 min() 或 max(),我想知道如果可以加入两者。
我相信这两者的结合将使我再次显着脱离接触并减少返工。
我的目标是了解第一天和最后一天的“valor_bruto_atual”。
第一个查询:
SELECT
titulo_id,
SUM(valor_bruto_atual) AS valor_max,
data_imports.data_import AS created_at,
week(data_imports.data_import) AS weeknumber
FROM
ativos_extratos
INNER JOIN
titulos ON titulo_id = titulos.id
INNER JOIN
representantes ON representante_id = representantes.id
INNER JOIN
data_imports ON data_import_id = data_imports.id
WHERE
user_id = 1
AND ativos_extratos.data_import_id IN (SELECT
MAX(ID)
FROM
data_imports
WHERE
data_import BETWEEN '2018-11-01' AND '2018-12-10'
GROUP BY week(data_import))
AND data_imports.data_import BETWEEN '2018-11-01' AND '2018-12-10'
GROUP BY titulos.nome_titulo , weeknumber
ORDER BY data_import ASC , titulos.nome_titulo ASC
第二次查询:
SELECT
titulo_id,
SUM(valor_bruto_atual) AS valor_min,
data_imports.data_import AS created_at,
week(data_imports.data_import) AS weeknumber
FROM
ativos_extratos
INNER JOIN
titulos ON titulo_id = titulos.id
INNER JOIN
representantes ON representante_id = representantes.id
INNER JOIN
data_imports ON data_import_id = data_imports.id
WHERE
user_id = 1
AND ativos_extratos.data_import_id IN (SELECT
MIN(ID)
FROM
data_imports
WHERE
data_import BETWEEN '2018-11-01' AND '2018-12-10'
GROUP BY week(data_import))
AND data_imports.data_import BETWEEN '2018-11-01' AND '2018-12-10'
GROUP BY titulos.nome_titulo , weeknumber
ORDER BY data_import ASC , titulos.nome_titulo ASC
唯一的变化是列的花哨名称和 where 条件中的 min() 或 max() 函数。
【问题讨论】: