回答
依我看bluefeet的答案可能是你真正需要的,因爲它聽起來像你只是想計數非零;但是這將讓你的零和非零項的數量如果不是這種情況:
SELECT
ROUND(SUM(CASE NVL(dmd_1wk, 0) = 0 THEN 1 ELSE 0 END), 2) AS "Zeros",
ROUND(SUM(CASE NVL(dmd_1wk, 0) != 0 THEN 1 ELSE 0 END), 2) AS "NonZeros"
FROM table
雖然在四捨五入整數沒有意義的,我已經包括了原來的回合,我猜因爲這是用來格式化數字的預期功能
TO_CHAR(SUM(...), '999.00')
:你使用它格式化,但是您可能需要使用。
方法1:案例聲明。如果需要繼續處理所有行(where子句將阻止),這可能很有用。
SELECT count(case when dmd_1wk = 0 then 0 else 1 end) as NonZeroCount FROM MyTable
方法2:WHERE子句。
SELECT
count(1) as NonZeroCount
FROM
MyTable
WHERE
dmd_1wk <> 0
:它仍然給出相同的結果 – Satheesh 2013-02-11 14:37:40
這是正確的。 where子句將處理更少的行。 case語句方法將處理所有行。根據您的其他應用程序需求,這兩個選項都可能有用 – 2013-02-11 14:39:36
這聽起來像你只需要添加一個WHERE
條款:如果你想同時非零和零個值的計數
SELECT
round(COUNT(dmd_1wk),2) AS NBR_ITEMS_1WK
FROM table
WHERE dmd_1wk <> 0;
,那麼你可以使用類似:
SELECT
round(COUNT(case when dmd_1wk <> 0 then dmd_1wk end),2) AS NBR_ITEMS_1WK_NonZero,
round(COUNT(case when dmd_1wk = 0 then dmd_1wk end),2) AS NBR_ITEMS_1WK_Zero
FROM table;
您可以過濾它們。
SELECT round(COUNT(dmd_1wk),2) AS NBR_ITEMS_1WK
FROM table
WHERE dmd_1wk <> 0;
我想提供使用NULLIF
因爲COUNT
將不計算NULL值的另一種解決方案:
SELECT round(COUNT(NULLIF(dmd_1wk,0)),2) AS NBR_ITEMS_1WK
FROM table;
這裏是Fiddle。
祝你好運。
- 1. 在SQL計數查詢中包含零?
- 2. 如何統計當前查詢中包含值的行數?
- 3. 在sql中計數非零值
- 4. Sql計數包含一些值的行
- 5. 如何顯示不同值的計數幷包含零?
- 6. SQL計數爲包括零值
- 7. 如何統計數字中的數字,包括前導零?
- 8. 計數中的R列的非零值
- 9. 如何刪除numpy.ndarray中包含非數字值的所有行
- 10. 如何統計包含特定值的XML節點數
- 11. awk計數零和非零字段值:
- 12. 如何計算給定數組列中非零值的數量?
- 13. 計數包含相同值的行數
- 14. SQL union全部不包含零值
- 15. 從包含零值
- 16. 包含「零記錄」信息的多個計數(*)的SQL
- 17. 如何計算sql中的零個數?
- 18. SQL SELECT當子表包含零行
- 19. 如何調整ActiveRecord(或直接SQL)查詢以在包含WHERE子句的JOIN中包含零計數記錄
- 20. 包含錶行值數組的SQL列
- 21. 如何刪除包含零的numpy數組中的一行?
- 22. 刪除包含非零最小值的數據幀的行和列
- 23. SQL Server:如何選擇包含僅包含一個數字的值的行
- 24. 如何統計行中的值的總和而不是sql中的行總數?
- 25. 統計R中包含給定值或項的文件數
- 26. 如何統計SQL行
- 27. 如何在python中刪除包含非ascii值的行
- 28. 如何在perl中獲得一個包含零計數的密鑰爲零的計數數組?
- 29. 刪除包含零的data.frame行,其中相鄰的行包含零
- 30. SQL%的數據包含值
COUNT()返回一個整數。那麼ROUND()是什麼意思? – APC 2013-02-11 14:42:36