首页 新闻 会员 周边

求一条sql语句【mysql】

0
悬赏园豆:10 [已解决问题] 解决于 2015-11-30 23:02

关于分组查询的:

  数据模型:

      name  , age  ,    sex

      小明  18    男

      小红  20    女

      小虎  19   男

 

按 sex 分组查询 查询出的效果:

  sex  count  age=18  age=19  age=20

  男     2    1      1    0

  女     1    0      0    0

  

康大头的主页 康大头 | 初学一级 | 园豆:25
提问于:2015-11-24 22:23
< >
分享
最佳答案
1

  我来整份现代的写法,使用pivot,希望能帮到你

create table dbo.usr
(
name varchar(10),
age int,
sex char(1)
)


insert into dbo.usr
values('a',18,'f'),('b',19,'m'),('c',20,'f'),('d',21,'m')


select p.sex,count(0) as usercount, sum(p.[18]) as [age=18], sum(p.[19]) as [age=19],sum(p.[20]) as [age=20],sum(p.[21]) as [age=21]
from dbo.usr u
PIVOT
(
count(age) for age in([18],[19],[20],[21])
) as p
group by p.sex
收获园豆:10
悦光阴 | 老鸟四级 |园豆:2251 | 2015-11-25 17:20
其他回答(1)
1

先按照sex分组,再用到行转列函数 处理age。

venjianX | 园豆:118 (初学一级) | 2015-11-25 15:22
--传统的解法
SELECT
    sex,
  count(*) as count,
SUM(CASE WHEN age = 18 THEN 1 ELSE 0 END) AS 'age=18', SUM(CASE WHEN age = 19 THEN 1 ELSE 0 END) AS 'age=19', SUM(CASE WHEN age = 20 THEN 1 ELSE 0 END) AS 'age=20' FROM person GROUP BY sex


支持(0) 反对(0) venjianX | 园豆:118 (初学一级) | 2015-11-25 16:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册