背景
遇到问题:一个表中的一个字段表示行业分类(该字段是个代码值,如10100代表大类[农、林、牧、渔业],0101,0102,0103,0104分别代表小类[农业,林业,畜牧业,渔业]),现在需要根据行业大类分组,统计各行业的人数。
行业代码表如下:
select * from gyr*****_d_hylb
下表存储用户的行业代码:
SELECT id,hydm from gy****_g**l_qzyx
解决思路
此表的代码表的前面两位代表行业大类,所以可以根据行业代码的前面两位进行分组查询。可以利用LEFT()函数或者SUBSTR()函数等(我用MYSQL)。
SELECT LEFT(hydm,2) L2_hydm,COUNT(1) from gyr****_gr**_qzyx GROUP BY LEFT(hydm,2)
这样就把用户根据行业分组了。
结果
用户表和代码表关联查询一下,展示全面的数据效果。
SELECT
hy.dmmc,
hy.dmid,
LEFT (qz.hydm, 2) L2_hydm,
COUNT(1) sum
FROM
gyr*****rjl_q**x qz,
gyr****p_d_h*b hy
WHERE
LEFT (qz.hydm, 2) = LEFT (hy.dmid, 2)
GROUP BY
LEFT (qz.hydm, 2)
这样就可以解决上面的问题啦!