我目前正在使用 PostgreSQL 版本 14。我有兩張表,一張是電子郵件串列,另一張描述這些電子郵件是否無效或被標記為取消訂閱 (black_list)。我想使用視圖在同一個表的兩個不同行中計算有多少地址無效和取消訂閱的百分比。
我的電子郵件表
| email_id | email|
|:---- |:------:|
| 1| bob.smith@yahoo.com|
| 2| ronald.gregor@gmail.com|
| 3| jo123456@gmail.com|
我的表 black_list 看起來像這樣。
| 電子郵件ID | 退訂 | 無效的 |
|---|---|---|
| 1 | 真的 | 錯誤的 |
| 3 | 錯誤的 | 真的 |
我期望的結果。
| 類別 | 價值 |
|---|---|
| 退訂 | 33 |
| 無效的 | 33 |
我嘗試使用此查詢進行查看:
CREATE OR REPLACE VIEW percentage_unsubscribe (value) AS SELECT (SELECT COUNT(*)
FROM black_list WHERE unsubscribe = True)/(SELECT COUNT(*) FROM email_table
但我想知道如何傳遞分類列和第二行。
uj5u.com熱心網友回復:
用于union生成兩行和with陳述句以優化查詢并使其更具可讀性,例如:
create or replace view percentage_unsubscribe (category, value) as
with totals as (
select
count(*) filter (where unsubscribe) as unsubscribe,
count(*) filter (where invalid) as invalid,
(select count(*) from email_table) as total
from black_list
)
select 'unsubscribe', unsubscribe* 100/ total
from totals
union
select 'invalid', invalid* 100/ total
from totals;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483436.html
標籤:sql PostgreSQL 看法
上一篇:如何將計算輸出作為mysql列?
