概要 :このチュートリアルでは、SQLite GROUP BYの使用方法を学習します 行のセットから要約行のセットを作成する句。
SQLite GROUP BYの概要 条項
GROUP BY 句は、SELECTのオプションの句です。 声明。 GROUP BY 選択した行のグループを、1つ以上の列の値で要約行に節します。
GROUP BY 句は、グループごとに1つの行を返します。グループごとに、MINなどの集計関数を適用できます。 、MAX 、SUM 、COUNT 、またはAVG 各グループに関する詳細情報を提供します。
次のステートメントは、SQLite GROUP BYの構文を示しています。 条項。
SELECT
column_1,
aggregate_function(column_2)
FROM
table
GROUP BY
column_1,
column_2;
Code language: SQL (Structured Query Language) (sql) 試してみてください
GROUP BY 句はFROMの後にあります SELECTの句 声明。ステートメントにWHEREが含まれている場合 句、GROUP BY 句はWHEREの後になければなりません 条項。
GROUP BYに続く 句は、グループを指定するために使用される列またはコンマ区切りの列のリストです。
SQLite GROUP BY 例
tracksを使用します デモンストレーション用のサンプルデータベースのテーブル。
SQLite GROUP BY COUNTを含む句 機能
次のステートメントは、アルバムIDとアルバムごとのトラック数を返します。 GROUP BYを使用します アルバムごとにトラックをグループ化し、COUNT()を適用する句 各グループに機能します。
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) 試してみてください
ORDER BYを使用できます グループを次のように並べ替える句:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
ORDER BY COUNT(trackid) DESC;Code language: SQL (Structured Query Language) (sql) 試してみてください
SQLite GROUP BY およびINNER JOIN 条項
INNER JOINを使用して、複数のテーブルからデータをクエリできます 句を使用してから、GROUP BYを使用します 行を一連の要約行にグループ化する句。
たとえば、次のステートメントはtracksを結合します albumsのあるテーブル アルバムのタイトルを取得し、GROUP BYを使用するテーブル COUNTを含む句 アルバムごとのトラック数を取得する関数。
SELECT
tracks.albumid,
title,
COUNT(trackid)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid;Code language: SQL (Structured Query Language) (sql) 試してみてください
SQLite GROUP BY HAVING 条項
グループをフィルタリングするには、GROUP BYを使用します HAVING 句。たとえば、15トラックを超えるアルバムを取得するには、次のステートメントを使用します。
SELECT
tracks.albumid,
title,
COUNT(trackid)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid
HAVING COUNT(trackid) > 15;Code language: SQL (Structured Query Language) (sql) 試してみてください
SQLite GROUP BY SUMを含む句 関数の例
SUMを使用できます グループごとの合計を計算する関数。たとえば、各アルバムの全長とバイト数を取得するには、SUMを使用します 合計ミリ秒とバイトを計算する関数。
SELECT
albumid,
SUM(milliseconds) length,
SUM(bytes) size
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) 試してみてください
SQLite GROUP BY MAXを使用 、MIN 、およびAVG 機能
次のステートメントは、アルバムID、アルバムタイトル、最大長、最小長、およびtracks内のトラックの平均長を返します。 テーブル。
SELECT
tracks.albumid,
title,
min(milliseconds),
max(milliseconds),
round(avg(milliseconds),2)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid;Code language: SQL (Structured Query Language) (sql) 試してみてください
SQLite GROUP BY 複数列の例
前の例では、GROUP BYで1つの列を使用しました 句。 SQLiteを使用すると、行を複数の列でグループ化できます。
たとえば、メディアタイプとジャンルでトラックをグループ化するには、次のステートメントを使用します。
SELECT
MediaTypeId,
GenreId,
COUNT(TrackId)
FROM
tracks
GROUP BY
MediaTypeId,
GenreId;Code language: SQL (Structured Query Language) (sql) 試してみてください
SQLiteはMediaTypeIdの値の組み合わせを使用します およびGenreId グループとしての列(例:(1,1)および(1,2))。次に、COUNTを適用します 各グループのトラック数を返す関数。
SQLite GROUP BY 日付の例
サンプルデータベースの次の請求書表を参照してください。
次のステートメントは、年ごとの請求書の数を返します。
SELECT
STRFTIME('%Y', InvoiceDate) InvoiceYear,
COUNT(InvoiceId) InvoiceCount
FROM
invoices
GROUP BY
STRFTIME('%Y', InvoiceDate)
ORDER BY
InvoiceYear;Code language: SQL (Structured Query Language) (sql) 出力は次のとおりです:
この例では:
- 関数
STRFTIME('%Y', InvoiceDate)日付文字列から年を返します。 -
GROUP BY条項は請求書を年ごとにグループ化します。 - 関数
COUNT()各年(またはグループ)の請求書の数を返します。
このチュートリアルでは、SQLite GROUP BYの使用方法を学習しました。 行を一連の要約行にグループ化する句。