我正在使用MySQL数据库。我正在使用的数据是Sales_history。我想提取最大值和最大值表中数据的平均值(每天不是最大值和平均值。它是整组数据的平均值和最大值)&同时每天打印数据。
我希望输出看起来如下
到目前为止我写的查询是
SELECT
SALES_DATE,
NUM_SALES,
MIN(NUM_SALES) AS MIIN,
MAX(NUM_SALES) AS MAAX,
TRUNCATE(AVG(NUM_SALES),2) AS AVVG
FROM SALES_HISTORY
GROUP BY
SALES_DATE
这显然是MAX
,MIN
&每天AVG
这不是我想要的。我能帮助你实现这个目标吗?
答案 0 :(得分:2)
您可以在子查询中进行聚合,因为MySQL不支持分析/窗口函数:
SELECT a.SALES_DATE
,a.NUM_SALES
,b.MIIN
,b.MAAX
,b.AVVG
FROM SALES_HISTORY a
JOIN (SELECT SALES_DATE
,MIN(NUM_SALES) AS MIIN
,MAX(NUM_SALES) AS MAAX
,TRUNCATE(AVG(NUM_SALES),2) AS AVVG
FROM SALES_HISTORY
GROUP BY SALES_DATE
) b
ON a.SALES_DATE = b.SALES_DATE
如果需要整个期间的最高/最低,而不是按日期,我们可以使用CROSS JOIN
:
SELECT a.SALES_DATE
,a.NUM_SALES
,b.MIIN
,b.MAAX
,b.AVVG
FROM SALES_HISTORY a
CROSS JOIN (SELECT MIN(NUM_SALES) AS MIIN
,MAX(NUM_SALES) AS MAAX
,TRUNCATE(AVG(NUM_SALES),2) AS AVVG
FROM SALES_HISTORY
) b