如何对 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 和日期排列的数据,请在 SELECT
和 GROUP 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;
我有很多拥有唯一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 和日期排列的数据,请在 SELECT
和 GROUP 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;