记录数和记录平均数查询-Oracle

时间:2020-03-29 05:00:06

标签: oracle

输出类似:

年份->月->产品名称->该年的总记录数->该年的平均记录数

我的查询返回了全年的总数和平均值,我也希望按月细分:

SELECT PRODUCT_ID,PRODUCT_NAME,EXTRACT(YEAR FROM DATE), COUNT(ID) AS TOTAL_COUNT,COUNT(ID)/COUNT(DISTINCT(EXTRACT(DATE))) AS AVG_NO_RECORDS
FROM TABLE
GROUP  BY  PRODUCT_ID,PRODUCT_NAME,EXTRACT(YEAR  FROM DATE)

1 个答案:

答案 0 :(得分:0)

除了您在此示例查询中使用了一堆无效的东西之外(table是无效的表名,date是无效的列名,extract中的一个是错误的) ,则可以在日期列上使用TO_CHAR并使用所需的格式掩码(例如mm),并对其进行分组。像这样:

SELECT PRODUCT_ID,
       PRODUCT_NAME,
       EXTRACT(YEAR FROM DATE), 
       -- 
       to_char(date, 'mm') as month,   --> this ...
       --
       COUNT(ID) AS TOTAL_COUNT,
       COUNT(ID)/COUNT(DISTINCT(EXTRACT(DATE))) AS AVG_NO_RECORDS
FROM TABLE
GROUP  BY  PRODUCT_ID,
           PRODUCT_NAME,
           EXTRACT(YEAR  FROM DATE),
           to_char(date, 'mm')         --> ... and this

另一方面,如果您已经按年和月分组,请查看是否可以为此使用单个列,例如to_char(date_column, 'mm.yyyy')