SQLite クラシック チュ...login
SQLite クラシック チュートリアル
著者:php.cn  更新時間:2022-04-13 17:05:02

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

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

各顧客の合計給与を知りたい場合は、次のような 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

次に、次の INSERT ステートメントを使用して COMPANY テーブルにさらに 3 つのレコードを作成しましょう:

INSERT INTO COMPANY VALUES (8, 'Paul', 24, 'Houston', 20000.00 );
INSERT会社の価値観 (9, 'ジェームズ', 44, 'ノルウェー', 5000.00 );
会社の価値観 (10, 'ジェームズ', 45, 'テキサス', 5000.00 );
現在、私たちの時計には、以下に示すように、名前の繰り返しの記録があります:

id name aghedress給与
------------------------ ------------------------------------ -------------- -----------
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

GROUP BY 句と一緒に ORDER BY 句を使用しましょう示されているように以下:

sqlite> SELECT NAME, SUM(SALARY)
s の s ‐ ‐ ‐sqlite SALARY)
---- ------ ---- -------
テディja 15000