資料庫名稱:SQL Server
資料庫版本:均可
內容/問題描述:
有辦法在一次Table scan中,就做掉多個條件欄位的統計嗎?
例如,我要統計某次考試中,每個分數區間的總人數,
如 60~69、70~79、80~89、90~100 區間的個別人數。
邏輯上來說應該掃一次、分別統計就夠了。
但SQL語法我只能寫成4次的table scan,像這樣
SELECT(
SELECT COUNT(*)
FROM [Test]
WHERE [Test].[Score] >= 90 && [Test] <= 100) AS [Up90Count],
SELECT COUNT(*)
FROM [Test]
WHERE [Test].[Score] >= 80 && [Test] < 90) AS [Up80Count],
(略)
這樣是跑4個table scan。
當然可以把Score加Index,但因為這邊舉的只是最簡單的例子。
有時情況並不能把所有條件參數都Index。