MySQL - Max,min,avg&每日数据

时间:2016-03-08 01:36:51

标签: mysql sql

我正在使用MySQL数据库。我正在使用的数据是Sales_history。我想提取最大值和最大值表中数据的平均值(每天不是最大值和平均值。它是整组数据的平均值和最大值)&同时每天打印数据。

我希望输出看起来如下

enter image description here

到目前为止我写的查询是

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

这显然是MAXMIN&每天AVG这不是我想要的。我能帮助你实现这个目标吗?

1 个答案:

答案 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