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 123
Desktop 250
我试过: SELECT 'Mobile' AS Platforms (它实现了第一部分,虽然我无法将桌面添加到它,不知道如何实现它)
解决方案
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 |
+---------+-------+
推荐阅读
- android-studio - 设置硬换行时,Android Studio 并不总是换行
- c++ - 关于 decltype + 逗号技巧的完整故事
- android-studio - 检测长按 RecyclerView 适配器的项目
- c++ - std::scoped_lock - 互斥体向量?
- c# - 只允许 {'delete' , 'backspace' , 一个 '.' , '-' , numbers '0 to 9'} 在文本框 C#/winforms
- python - 如何在python中的for循环中使用线程
- javascript - 如何将数组字符串转换为数组?
- machine-learning - 你能在Detectron2中同时运行人体姿态估计和物体检测吗
- android - 为什么在我的 android 项目中生成 3 个构建文件夹?
- python - 如何在列表中添加倍数?