双Group by 条件对表进行分组

继上篇博客的开发任务,为减小前台处理的数据量,在后台查询时对SQL进行优化,对如下所示表进行双分组查询
需求:根据时间分组求不同时间组内部 不同缺陷名称的缺陷个数与面积之和 两个group by
双Group by 条件对表进行分组_第1张图片
原SQL:

SELECT  
    PRODUCE_TIME,
    DEFECT_COUNT,
    DEFECT_AREA,
    DEFECT_CNAME
FROM
    BGTAMAQA.T_ADS_FACT_HR_DEFECT_STATISTICS
WHERE
    1=1
AND DEFECT_CNAME NOT IN ('NULL','',' ')
AND PRODUCE_TIME >= '20201202092942'
AND PRODUCE_TIME <= '20210205092942'
group by substr(PRODUCE_TIME,1)
ORDER BY
    PRODUCE_TIME DESC,
    DEFECT_CNAME DESC 
FETCH
    FIRST 49999999 rows only

改为:

SELECT
    sum(DEFECT_COUNT),
    sum(DEFECT_AREA),
    SUBSTR(PRODUCE_TIME,1,10) as TIME,
    DEFECT_CNAME
FROM
    BGTAMAQA.T_ADS_FACT_HR_DEFECT_STATISTICS
WHERE
    1=1
AND DEFECT_CNAME NOT IN ('NULL','',' ')
AND PRODUCE_TIME >= '20201202092942'
AND PRODUCE_TIME <= '20210205092942'
group by
SUBSTR(PRODUCE_TIME,1,10),DEFECT_CNAME
order by TIME
FETCH
    FIRST 49999999 rows only

你可能感兴趣的:(开发DEBUG记录,数据库,sql)