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

Postgresの複数のフィールドに集約するときに、欠落している行を埋めます

    使用できるもの:

    WITH cte AS (
       SELECT date, s.product
       FROM  ... -- some way to generate date series
       CROSS JOIN (SELECT DISTINCT product FROM sales_data) s
    )
    SELECT 
        c.date,
        c.product,
        COUNT(sd.sale_id) AS sales
    FROM cte c
    LEFT JOIN sales_data sd
      ON c.date = sd.date AND c.product= sd.product
    GROUP BY c.date, c.product
    ORDER BY c.date, c.product;
    

    最初に日付と製品のデカルト積を作成し、次にLEFT JOIN 実際のデータに変換して計算を行います。

    Oracleには、このシナリオに対応する という優れた機能があります。パーティション化された外部結合

    SELECT times.time_id, product, quantity 
    FROM inventory  PARTITION BY  (product) 
    RIGHT OUTER JOIN times ON (times.time_id = inventory.time_id) 
    WHERE times.time_id BETWEEN TO_DATE('01/04/01', 'DD/MM/YY') 
          AND TO_DATE('06/04/01', 'DD/MM/YY') 
    ORDER BY  2,1; 
    


    1. Node.jsはMySQLDockerコンテナに接続しますECONNREFUSED

    2. MySQLクエリエラー1054

    3. JDBCを使用してMySQLサーバーにpingを実行する

    4. PLS-00103:+ &=などを期待しているときに記号ENDが見つかりました