我有以下查询,它返回请求表中每个给定用户的请求列中的条目总数,而不是标记为为任何给定用户播放的请求数。
false
期望的结果:例如
弗雷德:2(在总共6个请求中播放) 生姜:1(总共4次请求)Lenny:2(在总共3个请求中播放)
实际结果:
Fred = 6
Ginger = 4
Lenny = 3
答案 0 :(得分:2)
那count
没有按你想象的那样工作。您需要先使用where
进行过滤。
...
INNER JOIN
(SELECT t1.FirstName, count(*) AS CountPlayed
FROM RequestsTable t1
WHERE t1.status = 'played'
GROUP BY t1.FirstName)
....
实际上,您可以将整个事情简化为一个查询:
SELECT
t1.FirstName, count(*)
FROM
RequestsTable t1
WHERE t1.status = 'played'
GROUP BY t1.FirstName;
答案 1 :(得分:1)
尝试使用SUM
代替COUNT
。 COUNT
计0 /假;它只会忽略NULL。