簡體   English   中英

在一個查詢中組合跨表的聚合函數

[英]Combining aggregate functions across tables in one query

我正在嘗試使用 SQL 構建一個報告,該報告將從同一查詢中完全獨立的表中返回值。

我創建了三個查詢,它們為我提供了我想要的每個輸出,但無法將它們合並到一個查詢中以生成單個報告。

-- 從一個時期選擇新訂閱的數量及其當前狀態 --

SELECT
    COUNT(
        CASE WHEN created >= '2019-05-01'
            AND created <= '2019-05-31' THEN
            1
        END) AS "number of new subscriptions",
    COUNT(
        CASE WHEN status = 'canceled'
            AND created >= '2019-05-01'
            AND created <= '2019-05-31' THEN
            1
        END) AS "count of canceled",
    COUNT(
        CASE WHEN status = 'active'
            AND created >= '2019-05-01'
            AND created <= '2019-05-31' THEN
            1
        END) AS "count of still active",
    COUNT(
        CASE WHEN status = 'trialing'
            AND created >= '2019-05-01'
            AND created <= '2019-05-31' THEN
            1
        END) AS "count of trialing",
    COUNT(
        CASE WHEN status = 'past_due'
            AND created >= '2019-05-01'
            AND created <= '2019-05-31' THEN
            1
        END) AS "count of past due"
FROM
    subscriptions;

-- 退款總數 --

SELECT
        COUNT(
            CASE WHEN received_at >= '2019-05-01'
                AND received_at <= '2019-05-31'
                AND refunded = TRUE THEN
                1
            END) AS "number of refunds"
FROM
    charges;

-- 退款總額 --

SELECT
    ROUND((SUM(amount_refunded) / 100), 2) AS "Total Amount Refunded"
FROM
    charges
WHERE
    received_at >= '2019-05-01'
    AND received_at <= '2019-05-31'
    AND refunded = TRUE;

我希望輸出是所有單個查詢的結果合並為一個輸出。

在您的情況下,您可以交叉連接由SELECT的派生表。

SELECT *
       FROM (SELECT <rest of your first query here>) a
            CROSS JOIN (SELECT <rest of your second query here>) b
            CROSS JOIN (SELECT <rest of your third query here>) c;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM