Mysql 如何组合和重命名同一列上的两个字段名并显示结果?
我正在尝试将字段“黄色”和“蓝色”组合起来,并将其重命名为“绿色”。然后显示每个颜色类别中的风扇数量-绿色-红色-白色 来自数据库“House”的样本Mysql 如何组合和重命名同一列上的两个字段名并显示结果?,mysql,sql,group-by,permutation,Mysql,Sql,Group By,Permutation,我正在尝试将字段“黄色”和“蓝色”组合起来,并将其重命名为“绿色”。然后显示每个颜色类别中的风扇数量-绿色-红色-白色 来自数据库“House”的样本 |fan_id| Color| --------------- 1 Yellow 2 Red 3 Blue 4 White 5 Blue 6 Yellow 预期结果: |fan.id| Color| --------------- 4 Green
|fan_id| Color|
---------------
1 Yellow
2 Red
3 Blue
4 White
5 Blue
6 Yellow
预期结果:
|fan.id| Color|
---------------
4 Green
1 Red
1 White
这是我关于这个问题的代码;但是,它似乎仍然在跟踪蓝色和黄色列,因为我看到“0”从结果中弹出。我不确定如何获得预期结果的输出
SELECT COUNT(fan.id) AS Total,
SUM(case when Color = "Yellow" OR Color = "Blue" then 1 else 0 end) as Green,
SUM(case when Color = "Red" then 1 else 0 end),
SUM(case when Color = "White" then 1 else 0 end)
FROM House
GROUP BY Color;
输出:
'''
您似乎想要简单的聚合:
select
case when color in ('Yellow', 'Blue') then 'Green' else color end real_color,
count(*) cnt_fans
from house
group by real_color
我会把黄色和蓝色换成绿色,然后计数
SELECT
Count(*) Count1
, Color
FROM (SELECT REPLACE(REPLACE(COLOR,'Yellow','Green'),'Blue','Green') Color
From Table1) a1
GROUP BY Color
ORDER BY Count1 DESC
请参见他没有绿色,而是将蓝色和黄色定义为绿色,因此…@nbk:谢谢…在阅读您的评论之前,我很难理解样本数据!我不相信这会起作用,因为数据库中没有“绿色”。我希望蓝色和黄色被计算在内,但将它们的计数合并并显示为“绿色”是的。我在nbk对此发表评论后修复了这个查询。这是一个正确的方法,我只需要在两个查询字段之间加一个逗号就可以在mysql中工作。所以最后是这样的:当颜色为('Yellow','Blue')时选择case,然后选择'Green',否则颜色结束real\u color,count(*)来自house group的cnt_fans by real_color;编辑:添加了逗号,所以现在它可以按原样工作了!哇!您使用子查询来实现这一点真是太酷了。非常感谢!没问题,向上投票总是被指定的,您应该将一个答案标记为有效答案
SELECT
Count(*) Count1
, Color
FROM (SELECT REPLACE(REPLACE(COLOR,'Yellow','Green'),'Blue','Green') Color
From Table1) a1
GROUP BY Color
ORDER BY Count1 DESC