[英]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.