我正在使用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|
+------------+---------+
有办法吗?
答案 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)
使用复杂表达式时,这可能会带来很大的便利。