在使用CASE stmt的SQL查询中,字段的1个值的计数不适用于其他值
请帮我解决一个问题,我想得到一个字段的1个值的和/计数,让我们计算一下balls字段中的红色球。现在我用case语句来计算红球的数量,但是case也给出了其他球的数量。我只找1个记录,比如说红球数为5在使用CASE stmt的SQL查询中,字段的1个值的计数不适用于其他值,sql,Sql,请帮我解决一个问题,我想得到一个字段的1个值的和/计数,让我们计算一下balls字段中的红色球。现在我用case语句来计算红球的数量,但是case也给出了其他球的数量。我只找1个记录,比如说红球数为5 SELECT b.ball_id, b.color, CASE WHEN b.color = 'Red' THEN COUNT(DISTINCT b.ball_id) END FROM ball_table b GROUP BY 1, 2 预期结果-1条记录
SELECT
b.ball_id, b.color,
CASE WHEN b.color = 'Red' THEN COUNT(DISTINCT b.ball_id) END
FROM
ball_table b
GROUP BY
1, 2
预期结果-1条记录仅说明红色球为5
我得到的是每个彩色球的计数,比如红色,黑色是9,以此类推。使用总和
SELECT b.ball_id,
b.color,
sum(CASE WHEN b.color='Red' then 1 END )
from ball_table b
group by 1,2
这是你的问题
SELECT
count(1) as ct
from ball_table
where color ='Red'
您需要以下两个表达式之一:
SELECT b.ball_id,
SUM(CASE WHEN b.color = 'Red' THEN 1 ELSE 0 END) as num_red_rows,
COUNT(DISTINCT CASE WHEN b.color = 'Red' THEN b.ball_id END)) as num_red_distinct_ids
FROM ball_table b
GROUP BY b.ball_id;
我猜
ball\u id
是唯一的,因此您需要num\u red\u rows
的表达式将大小写表达式放在计数中。示例数据和预期结果在这里会有所帮助。列,而不是字段<代码>大小写表达式,不是语句。Hi@metal它不起作用,结果给出了其他彩色球的总和。更新后,我认为您只需要计算球数='red'