【SQLドリル002】集計 COUNT関数、サブクエリ
コンピュータ名とそれに対するジョブのステータスが保存されているテーブル、DRILL002がある。
ComputerName JobStatus
————————————-
PC001 Normal
PC002 Normal(completed)
PC003 Error(system)
PC004 Error
PC005 Normal(proceeding)
PC006 Error(setup)
PC007 Normal
NormalでもNormal(completed)やNormal(proceeding)などがあるが、どれもNormalとして集計したい。また、ErrorもError(setup)やError(system)などがあるが、どれもErrorとして集計したい。
以下のようにNormalとErrorの合計数を求めるにはどのようにすれば良いか。
Normal Error
—————————–
4 3
MS SQL Serverでの回答案
まず、Normalの合計を求めます。
SELECT COUNT(*) AS ‘Normal’ FROM DRILL002 WHERE JobStatus like ‘Normal%’;
Normal
———————-
4
次に、Errorの合計を求めます。
SELECT COUNT(*) AS ‘Error’ FROM DRILL002 WHERE JobStatus like ‘Error%’;
Error
———————-
3
NormalとErrorの数を1つのクエリで同時に表示させるには、サブクエリを使います。
SELECT
(SELECT COUNT(*) FROM DRILL002
WHERE JobStatus like ‘Normal%’) as ‘Normal’,
(SELECT COUNT(*) FROM DRILL002
WHERE JobStatus like ‘Error%’) as ‘Error’
FROM Drill002;Normal Error
———————-
4 3
4 3
4 3
4 3
4 3
4 3
4 3
複数表示されているので、DISTINCTを利用して、見やすくします。
SELECT DISTINCT
(SELECT COUNT(*) FROM DRILL002
WHERE JobStatus like ‘Normal%’) as ‘Normal’,
(SELECT COUNT(*) FROM DRILL002
WHERE JobStatus like ‘Error%’) as ‘Error’
FROM Drill002;Normal Error
———————-
4 3
Leave a Reply
You must be logged in to post a comment.