中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

PostgreSQL rollup與窗口函數結合

小樊
83
2024-09-06 04:10:24
欄目: 云計算

在 PostgreSQL 中,ROLLUP 和窗口函數可以結合使用,以便在一個查詢中執行分組和匯總操作

首先,我們需要創建一個示例表:

CREATE TABLE sales (
    id SERIAL PRIMARY KEY,
    product_id INT,
    store_id INT,
    amount NUMERIC(10, 2),
    sale_date DATE
);

接下來,我們將插入一些示例數據:

INSERT INTO sales (product_id, store_id, amount, sale_date)
VALUES (1, 1, 100.00, '2021-01-01'),
       (1, 1, 200.00, '2021-01-02'),
       (1, 2, 300.00, '2021-01-01'),
       (2, 1, 400.00, '2021-01-01'),
       (2, 2, 500.00, '2021-01-01');

現在,我們將使用 ROLLUP 和窗口函數計算每個商店的銷售總額以及總銷售總額。這是一個示例查詢:

SELECT store_id, SUM(amount) AS total_sales,
       SUM(SUM(amount)) OVER () AS grand_total_sales
FROM sales
GROUP BY ROLLUP (store_id)
ORDER BY store_id;

這個查詢將返回以下結果:

 store_id | total_sales | grand_total_sales
----------+-------------+-------------------
        1 |       700.00|            1900.00
        2 |       800.00|            1900.00
     NULL |      1900.00|            1900.00

在這個查詢中,我們首先使用 GROUP BY ROLLUP (store_id) 對商店進行分組。然后,我們使用 SUM(amount) 計算每個商店的銷售總額。最后,我們使用窗口函數 SUM(SUM(amount)) OVER () 計算所有商店的總銷售總額。注意,當 store_id 為 NULL 時,表示這是一個匯總行,包含所有商店的總銷售總額。

0
铜鼓县| 新沂市| 台安县| 安国市| 老河口市| 虎林市| 涞源县| 玉田县| 隆昌县| 嘉鱼县| 吉木乃县| 玉环县| 上思县| 普兰县| 呼和浩特市| 曲水县| 九龙城区| 婺源县| 黄梅县| 新竹市| 长丰县| 布拖县| 鞍山市| 平原县| 双柏县| 晋宁县| 河津市| 根河市| 秦皇岛市| 突泉县| 巴塘县| 郓城县| 大同市| 兴宁市| 新巴尔虎左旗| 武义县| 苗栗县| 宜丰县| 湟源县| 五常市| 喜德县|