弱弱地问一个基础的 mysql 问题。我写的 sql 语句只查询出了根据日期分组的单日男性女性在表中分别有多少条记录。而不是男性女性分别有多少人。(因为其中的一些记录 ID 是重复的,也就是同一个人有多条不同的记录。)
我想要统计出每天男性女性分别有多少人?我要如何修改我的 sql 语句呢? 还是说我这样的表设计是有问题的呢?
1
xingyue 2019-09-09 12:57:21 +08:00 via Android 2
distinct
|
2
itIsUnbelievable OP @xingyue 我试过了,没有用
|
3
mringg 2019-09-09 13:33:18 +08:00 1
count 改为 sum
|
4
justfindu 2019-09-09 13:37:35 +08:00 1
SELECT
SUM( IF ( sex = male, 1, 0 ) ) AS male_count, SUM( IF ( sex = female, 1, 0 ) ) AS female FROM `TABLE` GROUP BY date |
5
itIsUnbelievable OP @justfindu 你这个的结果和我那个是一样的。还是没有对 uid 进行去重
|
6
itIsUnbelievable OP @mringg 还是一样的结果,因为 4-25 日那天是有 2 个用户 id 重复的,所以统计人数的时候要去掉重复的,所以我就找不到方向了。distinct 也没有用,很难受(⊙﹏⊙)
|
7
cnoder 2019-09-09 13:57:49 +08:00 1
select sex,count(1) as gender_num from hangzhou where id in (select id from hangzhou group by uid,date) GROUP BY sex
如果不报 onlyfullgroupby 的错误应该可以,另外性别应该用 gender |
8
polymerdg 2019-09-09 14:08:24 +08:00 1
group by date,uid
|
9
noahsophie 2019-09-09 14:09:53 +08:00
group by sex,date
|
10
noahsophie 2019-09-09 14:10:32 +08:00 1
看错了,8 楼正解
|
11
itIsUnbelievable OP @cnoder <img src="http://tva1.sinaimg.cn/large/007X8olVly1g6t8ijkmptj30pm05k0sp.jpg">
<br> 你的查询结果是这个,这个不是只统计出了表中男女性别的记录条数,没有去重的效果,而且日期也不是按照我结果的样式,这个问题也太难了吧,感觉我 mysql 好菜呀 |
12
itIsUnbelievable OP @polymerdg
<img src="http://tva1.sinaimg.cn/large/007X8olVly1g6t8zeedkqj30kh09iq35.jpg"> 这个我之前也试过,不过结果不对。 |
13
itIsUnbelievable OP 偷偷地顶一下....
|
14
justfindu 2019-09-09 15:14:24 +08:00
@itIsUnbelievable group by 再加上 uid 就行了
|
15
x66 2019-09-09 15:18:24 +08:00 1
@itIsUnbelievable #13
SELECT t.date,count(case when t.sex ='male' then 1 end ) male,count(case when t.sex ='female' then 1 end ) female from ( SELECT date,uid,sex from test1 GROUP BY date,uid,sex ) t GROUP BY t.date |
16
itIsUnbelievable OP @x66 老哥秀啊,这么多回答就你这个靠谱,谢谢老哥
|
17
haozxuan001 2019-09-09 17:26:02 +08:00
都是些什么神仙呀,
你把你的 THEN 1 改成 THEN distinct (id)岂不是改动最小的? |
18
haozxuan001 2019-09-09 17:26:27 +08:00
手抖了,distinct(uid)
|