我目前有以下UsersData表,它提供給定特定日期的匯總歷史資料:
| 日期 | 用戶身份 | 姓名 | 活躍 |
|---|---|---|---|
| 2021-10-01 | 1 | 山姆 | 1 |
| 2021-10-01 | 2 | 擔 | 1 |
| 2021-10-08 | 1 | 山姆 | 0 |
| 2021-10-08 | 2 | 擔 | 1 |
要求
我的要求是創建另一個匯總資料,該資料將顯示上述給定日期的活動記錄與非活動記錄 - 在一行中。所以像下面這樣:
| 日期 | 積極的 | 不活動 | 全部的 |
|---|---|---|---|
| 2021-10-01 | 2 | 0 | 2 |
| 2021-10-08 | 1 | 1 | 2 |
到目前為止我的 SQL 查詢
現在,當我嘗試以下單個查詢時,它作業正常:
select date, count(distinct userid) AS ActiveCount from User where isActive= 1 group by date
select date, count(distinct userid) AS InactiveCount from User where isActive= 0 group by date
但是由于我需要在每個日期的單行中顯示統計資訊,因此我嘗試了以下查詢,但是我在這里似乎做錯了一些事情:
select
date,
(select count(distinct userid) from User where isActive= 1 group by date) AS Active,
(select count(distinct userid) from User where isActive= 0 group by date) AS Inactive,
count(distinct userid) AS total
from userdata
group by date
order by date
有了這個,我將非活動記錄和活動記錄的輸出作為兩個結果的總和 - 活動 = 3(第一個日期的 2 第二個日期的 1)和“非活動” = 2(第一個日期的 0 第二個日期的 1)而'TotalCount' 值是準確的。
這是我通過上述查詢得到的輸出:
| 日期 | 積極的 | 不活動 | 全部的 |
|---|---|---|---|
| 2021-10-01 | 3 | 1 | 2 |
| 2021-10-08 | 3 | 1 | 2 |
我在這里做錯了什么?什么是正確的查詢?我目前正在 Databricks Delta Lake SQL 中執行這些。
uj5u.com熱心網友回復:
我不確定資料塊,但我認為這應該有效......
select date
, sum(case when isActive=1 then 1 else 0 end) AS ActiveCount
, sum(case when isActive=0 then 1 else 0 end) AS InactiveCount
, count(distinct userId) as total
from User
group by date
( SQLFiddle )
uj5u.com熱心網友回復:
select date
, count(distinct userid) filter (where isActive= 1) AS ActiveCount
, count(distinct userid) filter (where isActive= 0) AS InactiveCount
, count(distinct userid) Total
from User
group by date
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/339047.html
