gpt4 book ai didi

mysql - 在 MySQL 中进行数据透视

转载 作者:行者123 更新时间:2023-11-29 11:57:59 24 4
gpt4 key购买 nike

我在 MySql tbl_Analysis 中有一个表,其结构如下

uid | device_type
1 Desktop
2 Desktop
3 Mobile
4 Mobile
5 Laptop
6 Desktop

现在我需要得到答案。按 device_type

分组的用户数

我为此编写了以下查询

select count(device_type) as count, 
device_type as device
from tbl_Analysis
group by device_type;

以下是结果

count | device
3 Desktop
2 Mobile
1 Laptop

现在我希望这些结果成为pivot。在 Ms-Sql 中,有可用的内置功能,但我找不到在 MySQL 中执行此操作的任何方法。

我想要的结果是:

Desktop | Mobile | Laptop
3 2 1

最佳答案

您可以使用 case 表达式来生成数据透视 View 。

查询

select 
count(case when device_type = 'Desktop' then device_type end) as Desktop,
count(case when device_type = 'Mobile' then device_type end) as Mobile,
count(case when device_type = 'Laptop' then device_type end) as Laptop
from tb_analysis;

SQL Fiddle

通过动态 SQL 实现此目的的另一种方法。

查询

set @query = null;
select
group_concat(distinct
concat(
'count(case when device_type = ''',
device_type, ''' then device_type end) as ' ,device_type
)
) into @query
from tb_analysis ;

set @query = concat('select ', @query, ' from tb_analysis
');

prepare stmt from @query;
execute stmt;
deallocate prepare stmt;

SQL Fiddle

关于mysql - 在 MySQL 中进行数据透视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32880297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com