我想知道是否可以将 TOTAL 计数添加到 case 语句的最后一行:
SELECT
CASE
WHEN weight <= 10 THEN "very small"
WHEN weight > 10 AND weight <= 30 THEN "small"
WHEN weight > 30 AND weight <= 50 THEN "medium"
WHEN weight > 50 AND weight <= 85 THEN "large"
WHEN weight > 85 THEN "very large"
END AS dog_weights, count(weight) as count
FROM dogs
GROUP BY dog_weights;
输出表
| Dog_Weights | Count |
|-------------|-------|
| Very Small | 20 |
| Small | 20 |
| Medium | 40 |
| Large | 20 |
所需表格
| Dog_Weights | Count |
|-------------|-------|
| Very Small | 20 |
| Small | 20 |
| Medium | 40 |
| Large | 20 |
| Total | 100 |
我会为此使用子查询吗?谢谢。
最佳答案
MySQL中最简单的方法是使用rollup
:
SELECT (CASE WHEN weight <= 10 THEN 'very small'
WHEN weight > 10 AND weight <= 30 THEN 'small'
WHEN weight > 30 AND weight <= 50 THEN 'medium'
WHEN weight > 50 AND weight <= 85 THEN 'large'
WHEN weight > 85 THEN 'very large'
END) AS dog_weights,
count(*) as count
FROM dogs
GROUP BY dog_weights WITH rollup;
要获得TOTAL
,我认为您需要一个子查询:
假设weight
永远不为NULL
,你可以这样做:
SELECT COALESCE(dog_weights, 'total') as dog_weights, count
FROM (SELECT (CASE WHEN weight <= 10 THEN 'very small'
WHEN weight > 10 AND weight <= 30 THEN 'small'
WHEN weight > 30 AND weight <= 50 THEN 'medium'
WHEN weight > 50 AND weight <= 85 THEN 'large'
WHEN weight > 85 THEN 'very large'
END) AS dog_weights,
count(*) as count
FROM dogs
GROUP BY dog_weights WITH rollup
) d
关于mysql - 您可以在提供 TOTAL 的 CASE 语句中添加另一行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57998397/