mysql - 选择使用 mysql 对表进行广泛的 reshape

标签 mysql sql select pivot

我有这个表方案:

 pcode   city    
 1       MAD     
 3       MAD     
 3       LON     
 1       MAD     
 2       LON     
 3       MAD     
 1       LON     
 2       LON     

我想要这个结果:

 pcode    cityMAD    cityLON
 1        2          1
 2        0          2
 3        2          1

我的意思是,我需要一个 SELECT 来“ reshape ”表格,计算每个 pcode 和城市的观察次数。

table 很大(>100,000 obs)。不同 pcode 的数量未知,但不同城市的数量很少,所以我可以在 SELECT 中包含城市名称。

最佳答案

您可以像下面这样构建查询:

select pcode,
sum(case when city = 'MAD' then 1 ELSE 0 END) as cityMAD,
sum(case when city = 'LON' then 1 ELSE 0 END) as cityLON
from table_name
group by pcode;

您需要为每个城市添加 sum,就像我为 cityMAD 和 cityLON 添加一样。

关于mysql - 选择使用 mysql 对表进行广泛的 reshape ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44632069/

相关文章:

mysql - 获取外键指向的行 - mysql

php - PHP 和 MySQL 中的 INSERT 查询语法错误

java - 抽象模式类型 'User_Book' 未知

来自带有 IN 子句的两个表的 mysql 查询请求

sql - 从 SQL 脚本在 H2 数据库中插入长文本

php - 查询计数和功能无法正常工作

mysql - 如何格式化这个 mysql 查询

mysql - SQL SELECT DISTINCT 和 GROUP BY 查询不起作用

php - 用户注册时创建 MySQL 表

mysql - 完全匹配,然后是部分匹配