SQLite 分組依據
SQLite 的 GROUP BY 子句用於與 SELECT 語句一起使用,來將相同的資料分組。
在 SELECT 語句中,GROUP BY 子句放在 WHERE 子句之後,放在 ORDER BY 子句之前。
語法
下面給出了 GROUP BY 子句的基本語法。 GROUP BY 子句必須放在 WHERE 子句中的條件之後,必須放在 ORDER BY 子句之前。
SELECT column-list
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2....columnNlum
ORDER BY column1, column2....columnNlum. columnN
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2....columnNlum
ORDER BY column1, column2....columnNlum. columnN
您可以在GROUP BY 子句中使用多個欄位。確保您使用的分組列在列清單中。
實例
假設COMPANY 表有以下記錄:
ID NAME ------- ---------- ---------- ----------
1 Paul 32 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
1 Paul 32 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
如果您想了解每位客戶的總薪資,則可使用GROUP BY 查詢,如下所示:
sqlite> SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME;
#這將產生以下結果:
NAME SUM(SALARY)
---------- --------- --
Allen 15000.0
David 85000.0
James 10000.0
Kim 45000.0
Mark 65000.0
Paul 20000.0
Teddy 20000.0
---------- --------- --
Allen 15000.0
David 85000.0
James 10000.0
Kim 45000.0
Mark 65000.0
Paul 20000.0
Teddy 20000.0
現在,讓我們使用下面的INSERT 語句在COMPANY 表中另外建立三個記錄:
INSERT INTO COMPANY VALUES (8, 'Paul', 24, 'Houston', 20000.00 );#24, 'Houston', 20000.00 );#INS#INS; VALUES (9, 'James', 44, 'Norway', 5000.00 );
INSERT INTO COMPANY VALUES (10, 'James', 45,##############
INSERT INTO COMPANY VALUES (10, 'James', 45,##
現在,我們的表格有重複名稱的記錄,如下圖:
ID NAME AGE ----- ---------- ---------- ----------
1 Paul 32 Allen 25 Texas 15000.0
3 Teddy 23 25 Rich-Mond 65000.0
# 5 85000.0
6 Kim James 24 Houston 10000.0
8 24 Houston 20000.0
9 James 5000.0
10 James 45
1 Paul 32 Allen 25 Texas 15000.0
3 Teddy 23 25 Rich-Mond 65000.0
# 5 85000.0
6 Kim James 24 Houston 10000.0
8 24 Houston 20000.0
9 James 5000.0
10 James 45
讓我們用相同的GROUP BY 語句來對所有記錄按NAME 列進行分組,如下所示:
sqlite> SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME;
這將產生以下結果:
##NAME SUM( SALARY)
FROM COMPANY GROUP BY NAME ORDER BY NAME )---------- -----------
Allen 15000
David 85000
James 65000
Paul 40000
Teddy 20000
#讓我們使用ORDER BY 子句與GROUP BY 子句一起使用,如下所示
#讓我們使用ORDER BY 子句與GROUP BY 子句一起使用,如下##dite&sql; SELECT NAME, SUM(SALARY) Allen 15000
David 85000
James 65000
Paul 40000
Teddy 20000
#讓我們使用ORDER BY 子句與GROUP BY 子句一起使用,如下所示
---------- -----------
Teddy 20000Paul 40000
Mark 20000
David 85000
Allen 15000David 85000