我搜索了很多,但大多数解决方案都是用于连接选项,而不是我真正想要的。
我有一个名为 X
的表(在 Postgres 数据库中):
anm_id anm_category anm_sales
1 a_dog 100
2 b_dog 50
3 c_dog 60
4 a_cat 70
5 b_cat 80
6 c_cat 40
我想通过将“a_dog”、“b_dog”、“c_dog”分组为狗并将“a_cat”、“b_cat”、“c_cat”分组为猫来获得总销售额。
我无法更改表中的数据,因为它是一个外部数据库,我只能从中获取信息。
如何使用 SQL 查询执行此操作?它不需要特定于 Postgres。
最佳答案
使用 case
语句将相同类别的动物分组在一起
SELECT CASE
WHEN anm_category LIKE '%dog' THEN 'Dogs'
WHEN anm_category LIKE '%cat' THEN 'cats'
ELSE 'Others'
END AS Animals_category,
Sum(anm_sales) AS total_sales
FROM yourtables
GROUP BY CASE
WHEN anm_category LIKE '%dog' THEN 'Dogs'
WHEN anm_category LIKE '%cat' THEN 'cats'
ELSE 'Others'
END
此外,此查询应该适用于大多数数据库。
关于sql - 将具有相似字符串的行分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31487583/