将列添加到SQL查询

时间:2016-10-04 15:08:33

标签: postgresql

有一些选择

SELECT column1, 
COUNT(CASE column2 WHEN 'type1' THEN 1 ELSE NULL END) AS Type1Count,
COUNT(CASE column2 WHEN 'type2' THEN 1 ELSE NULL END) AS Type2Count,
COUNT(CASE column2 WHEN 'type3' THEN 1 ELSE NULL END) AS Type3Count
FROM Yourtable 
GROUP BY column1

请帮帮我,我如何在select查询中添加column0哪个值对应于column1,有些像

SELECT column0, column1, 
COUNT(CASE column2 WHEN 'type1' THEN 1 ELSE NULL END) AS Type1Count,
COUNT(CASE column2 WHEN 'type2' THEN 1 ELSE NULL END) AS Type2Count,
COUNT(CASE column2 WHEN 'type3' THEN 1 ELSE NULL END) AS Type3Count
FROM Yourtable 
GROUP BY column1

但我的变体不起作用......

1 个答案:

答案 0 :(得分:1)

当您选择某些列的确切值并在其他列上聚合(例如COUNT()SUM())时,您需要告诉数据库哪个是GROUP BY子句中的哪个

如果你说:

GROUP BY column0, column1

然后,对于column0column1的每个唯一组合,您将获得额外的一行结果,并在表格中针对该组合的所有行计算COUNT()个表达式。

如果您只想为column1的每个不同值创建一行,则需要告诉数据库您感兴趣的column0值。例如,您可能要求最小值每个column0的{​​{1}}代表:

column1

这意味着:

  • 我想为...的每个不同值设置一行(SELECT MIN(column0), column1 ... GROUP BY column1
    • ... GROUP BY ...column1
  • 对于每一行,请显示我(... column1):
    • 该组中SELECT的最小值
    • column0的值对于该组中的所有内容都是相同的