需要计算列中的唯一出现次数,并按日期对结果进行分组
Need to count unique occurrences in a column, and group the result by date
我需要计算字段中的唯一实例,然后按日期对计数进行排序,并尝试使用 SQL.
在一个查询中完成所有操作
我有 table 看起来像这样:
Date...........Defect_Code..........
2016-06-12 Machine Issue
2016-06-12 Broken
2016-06-12 null
2016-06-13 Machine Issue
2016-06-13 Machine Issue
2016-06-14 Crack
2016-06-14 Crack
我希望在计算每个 Defect_Code 的实例时按日期排序,从而导致 table 看起来类似于
Date............Count(Machine Issue)...Count(Broken)...Count(Crack)...Count(null)....
2016-06-12......1......................1...............0..............1..............
2016-06-13......2......................0...............0..............0..............
2016-06-14......0......................0...............3..............0..............
在此先感谢您的帮助!
您可以使用条件聚合来执行此操作,因为 Defect_Code
的值是一致的:
SELECT Date
, COALESCE(SUM(CASE WHEN Defect_Code = 'Machine Issue' THEN 1 END),0) AS 'Count(Machine Issue)'
, COALESCE(SUM(CASE WHEN Defect_Code = 'Broken' THEN 1 END),0) AS 'Count(Broken)'
, COALESCE(SUM(CASE WHEN Defect_Code = 'Crack' THEN 1 END),0) AS 'Count(Crack)'
, COALESCE(SUM(CASE WHEN Defect_Code IS NULL THEN 1 END),0) AS 'Count(Null)'
FROM YourTable
GROUP BY Date
ORDER BY Date
我需要计算字段中的唯一实例,然后按日期对计数进行排序,并尝试使用 SQL.
在一个查询中完成所有操作我有 table 看起来像这样:
Date...........Defect_Code..........
2016-06-12 Machine Issue
2016-06-12 Broken
2016-06-12 null
2016-06-13 Machine Issue
2016-06-13 Machine Issue
2016-06-14 Crack
2016-06-14 Crack
我希望在计算每个 Defect_Code 的实例时按日期排序,从而导致 table 看起来类似于
Date............Count(Machine Issue)...Count(Broken)...Count(Crack)...Count(null)....
2016-06-12......1......................1...............0..............1..............
2016-06-13......2......................0...............0..............0..............
2016-06-14......0......................0...............3..............0..............
在此先感谢您的帮助!
您可以使用条件聚合来执行此操作,因为 Defect_Code
的值是一致的:
SELECT Date
, COALESCE(SUM(CASE WHEN Defect_Code = 'Machine Issue' THEN 1 END),0) AS 'Count(Machine Issue)'
, COALESCE(SUM(CASE WHEN Defect_Code = 'Broken' THEN 1 END),0) AS 'Count(Broken)'
, COALESCE(SUM(CASE WHEN Defect_Code = 'Crack' THEN 1 END),0) AS 'Count(Crack)'
, COALESCE(SUM(CASE WHEN Defect_Code IS NULL THEN 1 END),0) AS 'Count(Null)'
FROM YourTable
GROUP BY Date
ORDER BY Date