Mik*_*lov 0 sql aggregate-functions
我有一张桌子:
[letter] [Name] [status] [price]
A row1 1 11
A row1 1 15
B row2 2 9
B row2 3 23
B row2 3 30
Run Code Online (Sandbox Code Playgroud)
并希望选择这样的数据:
SELECT letter, Name,
COUNT(*),
CASE WHEN price>10 THEN COUNT(*) ELSE NULL END
GROUP BY letter, Name
Run Code Online (Sandbox Code Playgroud)
结果是:
A row1 2 2
B row2 1 null
B row2 2 2
Run Code Online (Sandbox Code Playgroud)
但我想要这种格式:
A row1 2 2
B row2 3 2
Run Code Online (Sandbox Code Playgroud)
请帮我修改我的查询
关.可能想要这个:
SELECT letter, Name,
COUNT(*),
SUM(CASE WHEN price>10 THEN 1 ELSE 0 END)
FROM TableThatShouldHaveAppearedInTheQuestionInTheFromClause
GROUP BY letter, Name
Run Code Online (Sandbox Code Playgroud)
应该管用.假设第四列的意图是返回每个组内的行数,price大于10.它也可以做到这一点作为一个COUNT()在CASE然后返回非NULL和NULL对应该和不应该算作行的结果,但我觉得上面的形式更容易快速推理.