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

PostgreSQL-最初の行を他の行の合計として表示する

    これはPostgresのバージョン9.5で可能になりました

    PostgreSQL9.5スキーマ

    CREATE TABLE basket(fruits text, a integer, b integer, c integer);
    CREATE TABLE
    INSERT INTO basket(fruits, a, b, c) values('apples', 1, 1, 1),
                                          ('apples', 0, 1, 2),
                                          ('bananas', 1, 1, 2),
                                          ('oranges', 1, 1, 1);
    

    クエリ

    SELECT coalesce(fruits,'total'), sum(a) a, sum(b) b, sum(c) c
    FROM basket
    GROUP BY ROLLUP((fruits))
    

    結果

     fruits  | a | b | c
    ---------+---+---+---
     apples  | 1 | 2 | 3
     bananas | 1 | 1 | 2
     oranges | 1 | 1 | 1
     total   | 3 | 4 | 6
    

    このROLLUP GROUPING SETSで式を使用するのと同じです :

    SELECT fruits, sum(a) a, sum(b) b, sum(c) c
    FROM basket
    GROUP BY GROUPING SETS (fruits, ())
    

    GROUPING SETSの各サブリスト GROUPBY句に直接ある場合と同じように解釈されます。



    1. テーブルの列をカウントするにはどうすればよいですか

    2. 複数のスレッドから同時にMySQLにアクセスする方法

    3. 日付範囲の日数を数えますか?

    4. MySQL:単一のクエリを使用して複数のテーブルを削除する方法は?