数据库名称: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。