求统计姓氏个数的SQL语句

q191727779 2012-05-02 09:29:07
有张学生表,其中有一列是学生姓名,例如李1,李2,张3,这3个学生有2个不同的姓氏
要求统计出表中姓氏的个数,例如上面输出2,求SQL语句
...全文
2652 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
m_y_y_g 2012-05-12
  • 打赏
  • 举报
回复
复姓是次要滴、、
q191727779 2012-05-07
  • 打赏
  • 举报
回复 2
好思维~~~~~~
[Quote=引用 12 楼 的回复:]

引用 10 楼 的回复:

直接从长度上就能考虑复姓了吧
len(列名)<=3
--单姓
len(列名)>=4
--复姓


我不是找茬的,只是突然想起了欧阳锋...
[/Quote]
bulake 2012-05-06
  • 打赏
  • 举报
回复
create table table1
(
stuname varchar(10)
)
insert into table1
select '李1' union all
select '李2' union all
select '张3'
select substring(stuname,1,1) as 姓氏,count(*) as 次数 from table1 group by substring(stuname,1,1)
小天 2012-05-03
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

引用 10 楼 的回复:

直接从长度上就能考虑复姓了吧
len(列名)<=3
--单姓
len(列名)>=4
--复姓


我不是找茬的,只是突然想起了欧阳锋...
[/Quote]
受教了,还是用小F姐的方案稳妥
IT-Style 2012-05-03
  • 打赏
  • 举报
回复
小F姐姐正解

如果是复性的话,那可能得考试多种情况了.
例如,外国人的姓都在后面.
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]
复姓需要一个复姓参考表,学生表里最好有个标志位。。。
其实姓名分开存最好。。。
[/Quote]

要是有人叫[欧阳阳],谁知道他姓[欧](欧弟的欧)还是[欧阳]呢,考虑复姓的话拆分很困难,在最开始就单独存吧。
孤独加百列 2012-05-03
  • 打赏
  • 举报
回复
复姓需要一个复姓参考表,学生表里最好有个标志位。。。
其实姓名分开存最好。。。
liyangfd 2012-05-03
  • 打赏
  • 举报
回复

create table tb
(
[name] varchar(10)
)


insert into TB ([name]) values('李三')
insert into TB ([name]) values('李四')
insert into TB ([name]) values('王五')
insert into TB ([name]) values('完颜康')
insert into TB ([name]) values('张某某')

select * from tb

select count(distinct LEFT([name],1)) from tb






没有标志统计不出来复姓 例如完颜康 根据字符长度不行的
hyh086 2012-05-03
  • 打赏
  • 举报
回复
一张表专门存储姓氏?
kaikai_kk 2012-05-03
  • 打赏
  • 举报
回复
这个截取字符串是无法判别复姓的,还有可能是3姓,4姓...比如新彊,内蒙古那些地方的人
若只考虑2個字的复姓,不外乎几十个,全列出来保存到一个表中,再用它过滤
Emory1949 2012-05-03
  • 打赏
  • 举报
回复

哈哈
[Quote=引用 12 楼 的回复:]
引用 10 楼 的回复:

直接从长度上就能考虑复姓了吧
len(列名)<=3
--单姓
len(列名)>=4
--复姓


我不是找茬的,只是突然想起了欧阳锋...
[/Quote]
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

直接从长度上就能考虑复姓了吧
len(列名)<=3
--单姓
len(列名)>=4
--复姓
[/Quote]

我不是找茬的,只是突然想起了欧阳锋...
q191727779 2012-05-02
  • 打赏
  • 举报
回复
具体点好么?
[Quote=引用 10 楼 的回复:]

直接从长度上就能考虑复姓了吧
len(列名)<=3
--单姓
len(列名)>=4
--复姓
[/Quote]
小天 2012-05-02
  • 打赏
  • 举报
回复
直接从长度上就能考虑复姓了吧
len(列名)<=3
--单姓
len(列名)>=4
--复姓
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

额,没有挑衅的意思啊,学生不太会说话,求原谅……引用 4 楼 的回复:

引用 2 楼 的回复:

可以不考虑复姓,你会吗??
引用 1 楼 的回复:

有复姓吗?


居然敢这么明目张胆的挑衅小F姐姐,简直是不想混了,等等他给你来一百种方法,把你看晕
[/Quote]

又没谁跟你计较,哈哈
--小F-- 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
复姓会么???

引用 5 楼 的回复:

SQL code
---应该是
select count(distinct left(列名,1)) from 表
[/Quote]
那不好弄 应该需要一个对应表来显示哪些是复姓
q191727779 2012-05-02
  • 打赏
  • 举报
回复
额,没有挑衅的意思啊,学生不太会说话,求原谅……[Quote=引用 4 楼 的回复:]

引用 2 楼 的回复:

可以不考虑复姓,你会吗??
引用 1 楼 的回复:

有复姓吗?


居然敢这么明目张胆的挑衅小F姐姐,简直是不想混了,等等他给你来一百种方法,把你看晕
[/Quote]
q191727779 2012-05-02
  • 打赏
  • 举报
回复
复姓会么???
[Quote=引用 5 楼 的回复:]

SQL code
---应该是
select count(distinct left(列名,1)) from 表
[/Quote]
--小F-- 2012-05-02
  • 打赏
  • 举报
回复 1
---应该是
select count(distinct left(列名,1)) from 表
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

可以不考虑复姓,你会吗??
引用 1 楼 的回复:

有复姓吗?
[/Quote]

居然敢这么明目张胆的挑衅小F姐姐,简直是不想混了,等等他给你来一百种方法,把你看晕
加载更多回复(3)

34,835

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧