天天看點

字段合并與分組聚合

本文目錄

1 字段合并

2 分組聚合

1 字段合并

原始資料如下:表名為Employee

ID FirstName LastName Salary
1 Ming Zhang 8000
2 Lei Li 16000

查詢SQL:

SELECT ID, FirstName || ' ' || LastName AS Name, Salary

FROM Employee

查詢結果:

ID Name Salary
1 Ming Zhang 8000
2 Lei Li 16000

說明:“||”表示将左右兩個字段的内容連接配接在一起,“AS”表示為這個連接配接後的字段新命名。

2 分組聚合

2.1 字元串聚合

聚合函數:GROUP_CONCAT(FieldName[, Symbol])

說明:适用于SQLite,其它資料庫暫未測試。

原始資料如下:表名分别為Employee、Skill、Ely_Skill,表示Employee與Skill的多對多結構,例如:1 Ming Zhang 擁有的技術包括 1 Java、2 C#、3 C++。

ID First Name Last Name
1 Ming Zhang
2 Lei Li
ID Name
1 Java
2 C#
3 C++
E_ID S_ID
1 1
1 2
1 3
2 3

查詢SQL:

SELECT Employee.*, GROUP_CONCAT(Skill.Name, ',') AS Skills

FROM Employee

JOIN Ely_Skill ON Ely_Skill.E_ID = Employee.ID

JOIN Skill ON Ely_Skill.S_ID = Skill.ID

GROUP BY Employee.ID

查詢結果:

ID First Name Last Name Skills
1 Ming Zhang Java,C#,C++
2 Lei Li C++

2.2 數值聚合

SUM()、COUNT()等正常聚合函數,在網上已有很多完整而詳細的介紹,不再贅述。