SQL 分组 统计 按 类分组 统计 子类 显示 类名

来源:互联网 发布:淘宝店铺怎么添加模块 编辑:程序博客网 时间:2024/05/05 18:14
 

SQL分组统计每个大类下面有多少个小类并形成统计表结构:

原始数据表ptenudetail如下:
类名(ENUITEMLABEL)分类ID(ENUITEMVALUE)
农、林、牧、渔业  A
农业                          A01
畜牧业                      A03
牲畜的饲养              A031
农业服务业              A051
采 矿 业                  B
煤炭开采和洗选业  B06
褐煤的开采洗选      B062
其他采矿业              B11
制 造 业                  C
农副食品加工业      C13
谷物磨制                 C131
国际组织                  T

按分类ID分组统计如下:
SELECT  LEFT(ENUITEMVALUE, 1),COUNT(ENUITEMVALUE) FROM  ptenudetail WHERE (ENUTYPE = 'TRADETP') GROUP BY LEFT(ENUITEMVALUE,1)
结果如下:
A        5
B        4
C       3
T        1

如果要在对应的ID号前显示出对应的名称,就在SELECT语名加类名列并在GROUP BY后面进行再对类名进行分组这样统计出的数据并不是我们设想的结果,为解决此类问题语句如下:

按分类ID分组统计并对应类名称显示列表如下:
SELECT  a.ENUITEMLABEL,a.ENUITEMVALUE,b.tj FROM  ptenudetail a , (SELECT LEFT(ENUITEMVALUE, 1) as t, COUNT(*) as tj FROM ptenudetail WHERE (ENUTYPE = 'TRADETP') GROUP BY LEFT(ENUITEMVALUE, 1))  b where a.ENUITEMVALUE=b.t and (ENUTYPE = 'TRADETP')
结果如下:
农、林、牧、渔业  A     5
采 矿 业                  B     4
制 造 业                  C     3
国际组织                  T      1