我搜索了很多,但大多数解决方案都是用于连接选项,而不是我真正想要的。

我有一个名为 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/

10-16 15:56