Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何组合和重命名同一列上的两个字段名并显示结果?_Mysql_Sql_Group By_Permutation - Fatal编程技术网

Mysql 如何组合和重命名同一列上的两个字段名并显示结果?

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

我正在尝试将字段“黄色”和“蓝色”组合起来,并将其重命名为“绿色”。然后显示每个颜色类别中的风扇数量-绿色-红色-白色

来自数据库“House”的样本

|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