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