概要 :このチュートリアルでは、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
の使用方法を学習しました。 行を一連の要約行にグループ化する句。