当前位置: 代码迷 >> Sql Server >> 在一张表中查询出百家姓排行情况的SQL要如何写呢?从Group By 着手
  详细解决方案

在一张表中查询出百家姓排行情况的SQL要如何写呢?从Group By 着手

热度:358   发布时间:2016-04-24 09:39:03.0
在一张表中查询出百家姓排行情况的SQL要怎么写呢?从Group By 着手?


表列结构如上图,怎样统计出 XX姓多少人呢? 类似百家姓排行。
------解决思路----------------------
这个,最好有另外一张,百家姓的表,不然复姓不好视别
------解决思路----------------------
至少有一个百家姓的表 然后关联起来 GROUP BY
百家姓的表可以这样建立

ID NAME
1  赵
2  钱
3  孙
。。

然后在你现在的表里面记录ID
------解决思路----------------------
引用:
Quote: 引用:

至少有一个百家姓的表 然后关联起来 GROUP BY
百家姓的表可以这样建立

ID NAME
1  赵
2  钱
3  孙
。。

然后在你现在的表里面记录ID


引用:
至少有一个百家姓的表 然后关联起来 GROUP BY
百家姓的表可以这样建立

ID NAME
1  赵
2  钱
3  孙
。。

然后在你现在的表里面记录ID


百家姓表记录好之后,要怎么在现在的表记录ID呢?
即现在的表是 姓 + 名,怎么把百家姓表的ID相应地设置到当前表?
要用到 NAME LIKE '姓%' 作条件么?
也只能是这样了
--不考虑特殊情况
SELECT T2.姓,SUM(1) FROM 人员表 T1
LEFT JOIN 百家姓 T2 ON T1.NAME LIKE T2.姓+'%'
GROUP BY T2.姓
--考虑特殊情况
SELECT T2.姓,SUM(1) FROM 人员表 T1
OUTER APPLY(SELECT TOP 1 姓 FROM 百家姓 WHERE T1.NAME LIKE 姓+'%')T2
GROUP BY T2.姓
  相关解决方案