SQLite のグループ化
SQLite の GROUP BY 句は、同じデータをグループ化するために SELECT ステートメントとともに使用されます。
SELECT ステートメントでは、GROUP BY 句は WHERE 句の後、ORDER BY 句の前に配置されます。
構文
GROUP BY 句の基本的な構文を以下に示します。 GROUP BY 句は、WHERE 句の条件の後、ORDER BY 句の前に配置する必要があります。
SELECT 列リスト
FROM table_name
WHERE [条件]
GROUP BY column1, column2....columnN
ORDER BY column1, column2....columnN
FROM table_name
WHERE [条件]
GROUP BY column1, column2....columnN
ORDER BY column1, column2....columnN
GROUP BY 句の列には複数を使用できます。使用しているグループが列リストにリストされていることを確認してください。 C の例
会社テーブルに次のレコードがあると仮定します:
id 名前 年齢 住所 給与 ------------------------- -------------------------------------------------- ---------------------
1 ポール 32 カリフォルニア 20000.0
2 アレン 25 テキサス 15000.0
3 テディ 23 ノルウェー 20000.0
マーク 25 リッチモンド 65000.0
5 デビッド 27テキサス 85000.0
6 キム 22 サウスホール 45000.0
7 ジェームス 24 ヒューストン 10000.0
現在、私たちの時計には、以下に示すように、名前の繰り返しの記録があります:
2 アレン 25 テキサス 15000.0
3 テディ 23 ノルウェー 20000.0
マーク 25 リッチモンド 65000.0
5 デビッド 27テキサス 85000.0
6 キム 22 サウスホール 45000.0
7 ジェームス 24 ヒューストン 10000.0
各顧客の合計給与を知りたい場合は、次のような GROUP BY クエリを使用できます:
sqlite> SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME;
これにより、次の結果が生成されます。 :
名前合計(給与)
---------- -----------
アレン 15000.0
デビッド 85000.0
ジェームズ 10000.0
キム 45000.0
マーク 65000.0
ポール20000.0
Teddy 20000.0
---------- -----------
アレン 15000.0
デビッド 85000.0
ジェームズ 10000.0
キム 45000.0
マーク 65000.0
ポール20000.0
Teddy 20000.0
次に、次の INSERT ステートメントを使用して COMPANY テーブルにさらに 3 つのレコードを作成しましょう:
INSERT INTO COMPANY VALUES (8, 'Paul', 24, 'Houston', 20000.00 );
INSERT会社の価値観 (9, 'ジェームズ', 44, 'ノルウェー', 5000.00 );
会社の価値観 (10, 'ジェームズ', 45, 'テキサス', 5000.00 );
INSERT会社の価値観 (9, 'ジェームズ', 44, 'ノルウェー', 5000.00 );
会社の価値観 (10, 'ジェームズ', 45, 'テキサス', 5000.00 );
id name aghedress給与テディja 15000
------------------------ ------------------------------------ -------------- -----------
1 ポール 32 カリフォルニア 20000.0
2 アレン 25 テキサス 15000.0
3 テディ 23 ノルウェー 20000.0
4 マークモンド 65000.0
5 デビッド 27 テキサス 85000.0
6 キム 22 サウスホール 45000.0
7 ジェームズ 24 ヒューストン 10000.0
8 ポール 24 ヒューストン 20000.0
9 ジェームズ 44 ノルウェー 5000.0
10 ジェームズ 45 テキサス 5000.0
1 ポール 32 カリフォルニア 20000.0
2 アレン 25 テキサス 15000.0
3 テディ 23 ノルウェー 20000.0
4 マークモンド 65000.0
5 デビッド 27 テキサス 85000.0
6 キム 22 サウスホール 45000.0
7 ジェームズ 24 ヒューストン 10000.0
8 ポール 24 ヒューストン 20000.0
9 ジェームズ 44 ノルウェー 5000.0
10 ジェームズ 45 テキサス 5000.0
同じ GROUP BY ステートメントを使用して、以下に示すように NAME 列ですべてのレコードをグループ化しましょう:
sqlite> SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME;
これにより、次の結果が生成されます:
NAME SUM(SALARY)
--------- - - ----------
Allen 15000
David 85000
James 20000
Kim 45000
Mark 65000
Paul 40000
Teddy 20000
--------- - - ----------
Allen 15000
David 85000
James 20000
Kim 45000
Mark 65000
Paul 40000
Teddy 20000
GROUP BY 句と一緒に ORDER BY 句を使用しましょう示されているように以下:
sqlite> SELECT NAME, SUM(SALARY)
s の s ‐ ‐ ‐sqlite SALARY)
---- ------ ---- -------s の s ‐ ‐ ‐sqlite SALARY)