如何收集不需要的值?

时间:2019-08-22 06:50:12

标签: mysql sql

我正在使用COUNT(*)来计算一列中具有不同值的项目数。

我使用了以下查询:


SELECT `type`, COUNT(*) FROM `fruits` GROUP BY `type`

status是一列,其中的值为“ Apples”,“ Oranges”,“ Grapes”,“ Bananas”

结果是:

+------------+---------+
|    Type    | COUNT(*)|
+------------+---------+
| Apples     |       30|
| Oranges    |        8|
| Bananas    |        6|
| Grapes     |        2|
+------------+---------+

但我只希望将“苹果”和“橙色”计算在内。其余的将放在一行中。像这样:

+------------+---------+
|    Type    | COUNT(*)|
+------------+---------+
| Apples     |       30|
| Oranges    |        8|
| Others     |        8|
+------------+---------+

有办法吗?

5 个答案:

答案 0 :(得分:1)

在源自的表中使用case 表达式将其他人分组在一起。然后汇总其结果:

select `type`, COUNT(*)
from
(
    SELECT case when `type` in ('Apples','Oranges') then `type`
                else 'Others'
           end as 'type'
    FROM `fruits`
) dt
GROUP BY `type`

通过这种方式,您只需要编写一次case表达式,即可减少出错的可能性和维护的难度。

答案 1 :(得分:0)

使用case when表达式

SELECT case when `type` in ('Apple','Orange') then `type` else 'Others' end as 'Type', COUNT(*)
FROM `fruits` 
GROUP BY case when `type` in ('Apple','Orange') then `type` else 'Others' end

答案 2 :(得分:0)

用例何时

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "psr-0": {
        "Gregwar\\Cache": "vendor-custom/gregwar/cache",
        "Gregwar\\Image": "vendor-custom/gregwar/image",
        "Gregwar\\ImageBundle": "vendor-custom/gregwar/image-bundle"
    }
},

答案 3 :(得分:0)

您可以使用case语句获取结果。并根据需要为列指定别名。

SELECT case when `type` in ('Apple','Orange') then `type` else 'Others' end as 'Type', COUNT(*) as 'COUNT(*)'
FROM `fruits` 
GROUP BY case when `type` in ('Apple','Orange') then `type` else 'Others' end

答案 4 :(得分:0)

MySQL允许您在lambda中使用表别名。因此,如果您更改名称,则可以执行以下操作:

(defvar custom-map (make-keymap)
  "Custom key bindings.")
(define-key custom-map (kbd "C-c C-i") (tangle-init-and-reload))
(define-minor-mode custom-bindings-mode
  "Activates custom key bindings."
  t nil custom-map)

使用复杂表达式时,这可能会带来很大的便利。