コンピュータ名とそれに対するジョブのステータスが保存されているテーブル、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