不知道这是否是一个愚蠢的愿望。我会尽力解释。
例如,该表有类别 1、类别 2、类别 3、类别 4
,并且所有小时数都等于 10
。
我想要获取类别 1 中所有时间的总和,以及除第一个类别之外的所有其他类别的所有时间的总和。
查询:
SELECT category, sum(hours) from data WHERE category='category 1'
UNION
SELECT category, sum(hours) from data WHERE category<>'category 1'
结果:
category sum(hours)
category 1 | 10
category 2 | 30
我希望它像那样,重命名第二行,因为它自己选择它的名称。从类别 2
到所有其他
。
category sum(hours)
category 1 | 10
all others | 30
我用谷歌搜索了一个小时,但我只能找到如何重命名列,但找不到结果行。有什么想法吗?
最佳答案
您可以设置一个字符串值,而不是使用category
列的值:
SELECT category, SUM(hours) FROM data WHERE category = 'category 1'
UNION
SELECT 'all others', SUM(hours) FROM data WHERE category <> 'category 1'
<小时/>
您还可以使用 IF
来使用单个查询得到结果:
SELECT
IF(category = 'category 1', category, 'all others') AS category,
SUM(hours)
FROM data
GROUP BY IF(category = 'category 1', category, 'all others');
关于Mysql 如何在使用 union 和 sum 后重命名结果行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49295087/