编写mysql查询时无法定义自定义列和行
我有以下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
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 |
+---------+-------+