回答
依我看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. 如何刪除numpy.ndarray中包含非數字值的所有行
- 4. 如何統計包含特定值的XML節點數
- 5. 計數包含相同值的行數
- 6. 如何計算sql中的零個數?
- 7. SQL SELECT當子表包含零行
- 8. 如何調整ActiveRecord(或直接SQL)查詢以在包含WHERE子句的JOIN中包含零計數記錄
- 9. 刪除包含非零最小值的數據幀的行和列
- 10. 包含錶行值數組的SQL列
- 11. SQL Server:如何選擇包含僅包含一個數字的值的行
- 12. 刪除包含零的data.frame行,其中相鄰的行包含零
- 13. 如何使用包含屬性值零的表進行聯接?
- 14. 刪除包含零的行
- 15. 在postgresql數據庫中查找包含非數字值的行
- 16. SQL Server非集羣索引 - 包含值
- 17. 如何在SQL命令中包含值?
- 18. 如何在多維數組中計算包含零的COLUMNS的數量
- 19. 如何統計T-SQL中的月數
- 20. 如何在用MySQL GROUP BY表達式計數時包含零
- 21. 計數非空單元格,如果行包含單詞
- 22. 只顯示非零行計數
- 23. 如何計算OpenCV中連續的非零值之間的零像素?
- 24. 按小時計算行數幷包含零
- 25. 如何統計SQL Server中的ID之前的行數
- 26. 如何在計算中包含小數
- 27. 對包含NULL值的值進行計數的最佳做法
- 28. 如何在SSRS圖表中對包含零值的月份進行排序
- 29. Arcpy:統計平均值和非統計值的摘要?
- 30. 如何統計表中的行數?
COUNT()返回一個整數。那麼ROUND()是什麼意思? – APC 2013-02-11 14:42:36