编写mysql查询时无法定义自定义列和行

编写mysql查询时无法定义自定义列和行,mysql,Mysql,我有以下mysql查询: SELECT SUM(device='Android' OR device='iPhone') AS `Mobile`, SUM(device='Windows') AS `Desktop` FROM `table 我从中得到了正确的结果,就是 Mobile Desktop 123 250 但是我想要一个不同的结果,我找不到任何这样的函数。我需要输出如下所示: Platforms Number Mobile

我有以下mysql查询:

SELECT SUM(device='Android' OR device='iPhone') AS `Mobile`,
SUM(device='Windows') AS `Desktop`
FROM `table
我从中得到了正确的结果,就是

Mobile      Desktop
123           250
但是我想要一个不同的结果,我找不到任何这样的函数。我需要输出如下所示:

    Platforms   Number
      Mobile     123
      Desktop    250

我尝试过:选择“移动”作为平台(它实现了第一部分,尽管我无法将桌面添加到其中,但不确定如何实现)

通常我不会回答没有示例数据的问题

SELECT 
 'Mobile' AS platsforms
 , SUM(device='Android' OR device='iPhone') AS `Number`
FROM 
 Table

UNION ALL 

SELECT 
 'Desktop' AS platsforms
 , SUM(device='Windows') AS `Number`
FROM 
 Table

您可以尝试使用
CASE WHEN
获取
Platforms
列,然后使用它对
进行分组

SELECT 
       CASE
              WHEN device='Android' OR device='iPhone' THEN 'Mobile' 
              WHEN device='Windows' THEN 'Desktop' 
       END Platforms , 
       Count(*) Number
FROM   `table
where device IN ('Android','iPhone','Windows')
GROUP BY 
      CASE 
              WHEN device='Android' OR  device='iPhone' THEN 'Mobile' 
              WHEN device='Windows' THEN 'Desktop' 
       END

你也可以给我看一下你的桌子吗?你需要按一些列添加
DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id SERIAL PRIMARY KEY
,device VARCHAR(12)
);

INSERT INTO my_table (device) VALUES
('Android'),
('Windows'),
('iPhone'),
('Bada'),
('Windows'),
('iPhone');

SELECT type
     , COUNT(*) total 
  FROM 
     ( SELECT CASE WHEN device IN('Android','iPhone') THEN 'Mobile'  
                   WHEN device = 'Windows' THEN 'Desktop' 
                   ELSE device END type 
         FROM my_table
     ) x 
 GROUP 
    BY type;
+---------+-------+
| type    | total |
+---------+-------+
| Bada    |     1 |
| Desktop |     2 |
| Mobile  |     3 |
+---------+-------+