大家好,在 SQL 中,我們必須使用查詢來獲得所需的輸出。有時我們必須撰寫一個大大小小的查詢來獲得相同的輸出。
我有一個問題陳述,我想在下表中計算 1 的計數:

我想計算總和。
uj5u.com熱心網友回復:
使用您發布的示例資料,一種選擇是
SQL> with test (a, b, c, d) as
2 (select 1, 0, 0, 0 from dual union all
3 select 0, 1, 0, 0 from dual union all
4 select 0, 0, 1, 0 from dual union all
5 select 0, 0, 0, 1 from dual
6 )
7 select sum(a b c d) result
8 from test;
RESULT
----------
4
SQL>
uj5u.com熱心網友回復:
如果您的值只有 0 或 1,那么:
SELECT SUM(A B C D) AS total
FROM table_name
如果你的價值觀可以是別的東西,那么:
SELECT SUM(
CASE A WHEN 1 THEN 1 ELSE 0 END
CASE B WHEN 1 THEN 1 ELSE 0 END
CASE C WHEN 1 THEN 1 ELSE 0 END
CASE D WHEN 1 THEN 1 ELSE 0 END
) AS total
FROM table_name
其中,對于樣本資料:
CREATE TABLE table_name (a, b, c, d) AS
SELECT 1, 0, 0, 0 FROM DUAL UNION ALL
SELECT 0, 1, 0, 0 FROM DUAL UNION ALL
SELECT 0, 0, 1, 0 FROM DUAL UNION ALL
SELECT 0, 0, 0, 1 FROM DUAL;
兩個輸出:
全部的 4
db<>在這里擺弄
uj5u.com熱心網友回復:
WITH CTE(A,B,C,D)AS
(
SELECT 1,0,0,0 UNION ALL
SELECT 0,1,0,0 UNION ALL
SELECT 0,0,1,0 UNION ALL
SELECT 0,0,0,1
)
SELECT SUM
(
CASE
WHEN C.A=1 OR C.B=1 OR C.C=1 OR C.D=1 THEN 1
ELSE 0
END
)AS CNTT
FROM CTE AS C
您也可以嘗試此解決方案
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/422062.html
標籤:
下一篇:SQL左連接避免重復
