这个问题能用一个 select 实现吗

2021-08-25 18:50:13 +08:00
 zzzain46

表结构以及数据如图 1,要求只使用一个“select”从这个表中筛选出 2017 年 7 月份各性别的开户人数统计结果,结果格式如图 2

图 1


图 2 ![]( https://pic.imgdb.cn/item/6126204744eaada73936ff8e.png)
1738 次点击
所在节点    MySQL
9 条回复
LowBi
2021-08-25 19:32:26 +08:00
一个“select”是一句里就出现这么一个吗?
wangsongyan
2021-08-25 19:36:02 +08:00
可以,根据身份证第 17 位取余分组,奇数男性,偶数女性
liprais
2021-08-25 19:36:38 +08:00
可以身份证号可以看出性别
zzzain46
2021-08-25 19:37:24 +08:00
@wangsongyan 如何取性别我知道
crystom
2021-08-25 19:40:47 +08:00
select count(distinct kahao), IF(SUBSTR(idcard, LENGTH(idcard) - 1, 1) % 2 = 1, '男','女') AS sex from tablename where ds >= '2017-07-01' and ds <= '2017-07-31' group by 2
heyjei
2021-08-25 19:43:55 +08:00
这不是 case when 和 group by 的常规用法吗,具体的写法就要看具体的数据库软件对字符串操作的函数了。
mmdsun
2021-08-25 19:48:57 +08:00
@zzzain46 他差不多都把答案告诉你了。还有其他什么疑问么。

不会是不知道 MySQL group by 是可以直接接函数和表达式的吧。
group by substring() ,group by dateformat 都可以。
zzzain46
2021-08-25 20:10:18 +08:00
@crystom 这个的 group by 2 的意思是根据 select 的第二个字段( sex )分组的简写吗?学习了
zzzain46
2021-08-25 20:28:58 +08:00
@mmdsun 是不熟悉 sql 里 if 的用法🤧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/797993

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX