如何对 SQL 中的一组自定义计算字段求和?

How can I sum a group of a custom calculated field in SQL?

我有很多拥有唯一ID的购物者记录,有时会有相同ID的购物者存在,我想总结他们的shoppable_rated分,只有return 1这些 ID 的 shoppable_rated 总和的结果,因此 ID 不会有重复的行,它们的总分将相加。请你告诉我如何改变我的查询?我在尝试使用 HAVING 时遇到了一点困难,无法弄明白。

非常感谢!

SELECT 
    id, 
    shoppable,
    day,
    case when shoppable in ('Good','Very Good','Amazing') then 1 else 0 end as shoppable_rated
FROM 
    shoppers
WHERE
    shoppable != 'Unknown'
GROUP BY 
    id
ORDER BY 
    shoppable_rated DESC;

我的数据示例:

id, shoppable, day, shoppable_rated
1, Good, 26, 1
2, Very Good, 14, 1
3, Not Great, 3, 0
1, Bad, 16, 0
3, Amazing, 30, 1

首先,删除结果集中不需要的所有未聚合列。

其次,使用聚合函数:

SELECT id,
       SUM(case when shoppable in ('Good','Very Good','Amazing') then 1 else 0 end) as shoppable_rated
FROM shoppers
WHERE shoppable <> 'Unknown'
GROUP BY id
ORDER BY shoppable_rated DESC;

如果您需要按 ID 和日期排列的数据,请在 SELECTGROUP BY 中包含两列:

SELECT id, day,
       SUM(case when shoppable in ('Good','Very Good','Amazing') then 1 else 0 end) as shoppable_rated
FROM shoppers
WHERE shoppable <> 'Unknown'
GROUP BY id, day
ORDER BY shoppable_rated DESC;