こんにちは私はステータス列のあるテーブルを持っています。SQLを使用して、レコードの総数、合格ステータスのレコードの総数、および不合格ステータスのレコードの総数を取得するにはどうすればよいですか?
質問する
9491 次
4 に答える
2
このようなものはどうですか:
SELECT Status, COUNT(*)
FROM dbo.YourTable
GROUP BY Status WITH ROLLUP
これは、これら2つのステータス(合格、不合格)が唯一のステータスである場合に機能します(そうでない場合は、追加でWHERE Status IN ('fail', 'pass')
条件が必要になります)。またWITH ROLLUP
、すべてのステータスの行の総数(Status = NULL
出力にaが含まれる)も表示されます。
于 2012-07-24T20:47:08.717 に答える
1
私は次のようなクエリを書きます
select
Count(*) as TotalRecords,
Sum(case where status = 'Pass' then 1 else 0 end) as PassRecords,
Sum(case where status = 'Fail' then 1 else 0 end) as FaileRecords
from Table
于 2012-07-24T20:51:08.930 に答える
0
これは、caseステートメントと集計を使用して実行できます。
select count(*), sum(case when status = 'pass' then 1 else 0 end) as pass,
sum(case when status = 'fail' then 1 else 0 end) as fail
from t
于 2012-07-24T20:50:33.280 に答える
0
他のいくつかの選択肢(SQL Server 2008以降):
DECLARE @foo TABLE([status] CHAR(4));
INSERT @foo SELECT 'pass'
UNION ALL SELECT 'pass'
UNION ALL SELECT 'fail';
-- option #1:
SELECT [status], c = COUNT(*)
FROM @foo
GROUP BY GROUPING SETS(([status]), ());
-- option #2:
SELECT [status], c = COUNT(*)
FROM @foo
GROUP BY [status]
UNION ALL
SELECT NULL, COUNT(*) OVER() FROM @foo;
于 2012-07-24T21:00:06.793 に答える