Mysql 如何在使用 union 和 sum 后重命名结果行

标签 mysql select sum union

不知道这是否是一个愚蠢的愿望。我会尽力解释。

例如,该表有类别 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');

demo: http://sqlfiddle.com/#!9/87e085/9/1

关于Mysql 如何在使用 union 和 sum 后重命名结果行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49295087/

相关文章:

c - 如何解三位数之和,以及如何计算第二个数

SQL 获取 Netezza 数据库中的唯一行

php - 如何为每个登录用户显示唯一内容?

类似于 Wordpress 的 PHP 短 URL

MySQL 查询 - 未知列

mysql - 在 MySQL 中计算频率

select - Angular2 ngModel undefined with &lt;input&gt; 标签

sql - Postgresql - 创建用户的累计总和

mysql - SQL 中的 SUM 求和

mysql - 从数据库中的笛卡尔坐标中选择极坐标