Sql 多次计算同一列,已分组
我试图计算一列中的所有“Y”和“N”,但将它们按另一列分组。我可以让它只拉“Y”或“N”,其中:Sql 多次计算同一列,已分组,sql,count,group-by,Sql,Count,Group By,我试图计算一列中的所有“Y”和“N”,但将它们按另一列分组。我可以让它只拉“Y”或“N”,其中: SELECT TABLE2.GROUP_BY_THIS,COUNT(TABLE1.FLAG) FROM TABLE1 INNER JOIN TABLE2 On TABLE1.Primary_Key = TABLE2.Foreign_Key WHERE TABLE1.FLAG_Required = "Y" GROUP BY TABLE2.GROUP_BY_THIS 我可以看到整个数据集的“Y”和“N
SELECT TABLE2.GROUP_BY_THIS,COUNT(TABLE1.FLAG)
FROM TABLE1 INNER JOIN
TABLE2 On TABLE1.Primary_Key = TABLE2.Foreign_Key
WHERE TABLE1.FLAG_Required = "Y"
GROUP BY TABLE2.GROUP_BY_THIS
我可以看到整个数据集的“Y”和“N”,而不是使用第一个答案按另一列进行分组:但我不太确定如何得到我想要的结果,应该有点像这样:
GROUP_BY_THIS Y COUNT N COUNT
-------------------------------
GROUP1 10 1
GROUP2 10 100
GROUP3 0 10
GROUP4 50 500
GROUP5 1000 0
我是否需要进一步分组?它不应该是SUM()而不是COUNT()?@frikozoid在这种情况下,如果未指定任何
或其他,并且true condition的值为1,COUNT()
和SUM()
将产生相同的结果。@Andomar Oh,好的。空值不计算:)+1不应该是SUM()而不是COUNT()?@frikozoid在这种情况下,如果未指定ELSE
,并且true条件的值为1,COUNT()
和SUM()
将产生相同的结果。@Andomar哦,好的。空值不计算:)+1.
SELECT TABLE2.GROUP_BY_THIS
, COUNT(CASE WHEN TABLE1.FLAG = 'Y' THEN 1 END)
, COUNT(CASE WHEN TABLE1.FLAG = 'N' THEN 1 END)
FROM TABLE1
JOIN TABLE2
ON TABLE1.Primary_Key = TABLE2.Foreign_Key
GROUP BY
TABLE2.GROUP_BY_THIS