通过排除列的某些值进行分组

group by excluding some values of a column

一列中有很多值,例如example 文具 table。 我想要铅笔、钢笔、笔记本等的数量。我可以很容易地使用 DECODE 来实现。但是,如果我想排除 Pencil、Pen 和笔记本并将其余的计算在一个公共组中 "Others"。我们怎么能做到呢?

假设列名是 ITEM 并且 table 被命名为 STATIONERY 并且您具体命名的列项是 PencilPenNotebook 然后尝试:

SELECT CASE item
         WHEN 'Pencil' THEN 'Pencil'
         WHEN 'Pen' THEN 'Pen'
         WHEN 'Notebook' THEN 'Notebook'
         ELSE 'Others'
       END AS item_type, 
       count(*)
  FROM stationery
 GROUP BY CASE item
            WHEN 'Pencil' THEN 'Pencil'
            WHEN 'Pen' THEN 'Pen'
            WHEN 'Notebook' THEN 'Notebook'
            ELSE 'Others'
          END;