sql >> データベース >  >> RDS >> SQLite

SQLite Group By

    概要 :このチュートリアルでは、SQLite GROUP BYの使用方法を学習します 行のセットから要約行のセットを作成する句。

    SQLite GROUP BYの概要 条項

    GROUP BY 句は、SELECTのオプションの句です。 声明。 GROUP BY 選択した行のグループを、1つ以上の列の値で要約行に節します。

    GROUP BY 句は、グループごとに1つの行を返します。グループごとに、MINなどの集計関数を適用できます。 、MAXSUMCOUNT 、または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の使用方法を学習しました。 行を一連の要約行にグループ化する句。


    1. PostgreSQLでテーブルのピボットを解除する方法

    2. Oracleで英数字以外の文字のみを含む行を返す2つの方法

    3. Postgresqlでロック解除された行を選択します

    4. MySQLのコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?