1. 程式人生 > >SQL 根據一個欄位的一部分分組查詢

SQL 根據一個欄位的一部分分組查詢

背景

遇到問題:一個表中的一個欄位表示行業分類(該欄位是個程式碼值,如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)

這樣就可以解決上面的問題啦!