6

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

 3 years ago
source link: https://www.v2ex.com/t/797993
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  MySQL

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

  zzzain46 · 20 小时 5 分钟前 · 734 次点击

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

图 2 ![]( https://pic.imgdb.cn/item/6126204744eaada73936ff8e.png)

第 1 条附言  ·  19 小时 18 分钟前

我知道如何通过身份证号取性别

9 条回复    2021-08-25 20:28:58 +08:00

LowBi

LowBi   19 小时 23 分钟前 via Android

一个“select”是一句里就出现这么一个吗?

wangsongyan

wangsongyan   19 小时 19 分钟前 via iPhone

可以,根据身份证第 17 位取余分组,奇数男性,偶数女性

liprais

liprais   19 小时 19 分钟前 via iPhone

可以身份证号可以看出性别

zzzain46

zzzain46   19 小时 18 分钟前 via iPhone

@wangsongyan 如何取性别我知道

crystom

crystom   19 小时 14 分钟前   ❤️ 1

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

heyjei   19 小时 11 分钟前   ❤️ 1

这不是 case when 和 group by 的常规用法吗,具体的写法就要看具体的数据库软件对字符串操作的函数了。

mmdsun

mmdsun   19 小时 6 分钟前 via Android   ❤️ 2

@zzzain46 他差不多都把答案告诉你了。还有其他什么疑问么。

不会是不知道 MySQL group by 是可以直接接函数和表达式的吧。
group by substring() ,group by dateformat 都可以。

zzzain46

zzzain46   18 小时 45 分钟前 via iPhone

@crystom 这个的 group by 2 的意思是根据 select 的第二个字段( sex )分组的简写吗?学习了

zzzain46

zzzain46   18 小时 26 分钟前 via iPhone

@mmdsun 是不熟悉 sql 里 if 的用法🤧

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK