【初学者必見!】SQLの基本、実務使用例を徹底解説!COUNT編

サムネイル SQL

※この記事にはプロモーションが含まれています。

ふりかえり

筆者
筆者

本記事は、SQLの基本、実務使用例編になります。

SQLの基礎に関しましては、

【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

A子
A子

本編に入ります!

count関数の基本構文

筆者
筆者

まずは、基本構文から見ていきましょう!

select count(カラム名) from テーブル名;

A子
A子

select,count,fromだね!

筆者
筆者

はい、そうです!

count 関数は、テーブルのデータ件数を数えるために使います。
たとえば、「申請データが何件あるか?」や「職員ごとの申請数を知りたい」など、データの数を集計するのに便利な関数です。

count(*)すべての行 をカウントする(NULL も含める)
count(カラム名)指定したカラムの NULL 以外 の行をカウント
count(distinct カラム名)重複を除いた 件数をカウント
count(*) group by ...グループごとに 件数をカウント

実務レベルの使用例を見ていこう!

筆者
筆者

実際に、SQLを使用してデータを確認していきましょう。

SQLに関しては以下を使用して解説していきます。

create table文、select文、insert文、update文、delete文、

drop table文、につきましては、過去にアップロードした

【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

A子
A子

目次の、「ふりかえり」のところにそれぞれの記事のリンクが

貼ってあるよ!

または、サイドバーのカテゴリーにSQLがあるから、そちらからでも

参照できます!

[事前準備]今回、実行するSQLの一覧

-- 申請管理情報テーブルの作成
create table 申請管理情報 (
    STAFF_NO varchar2(10) not null,   -- 職員番号 (Staff Number) 
    APPLI_NO varchar2(10) not null,   -- 申請番号 (Application Number) 
    APPLI_DATE date,                  -- 申請年月日 (Application Date) 
    DEPARTMENT varchar2(10),          -- 部署名(Department)
    constraint PK_申請管理情報 primary key (STAFF_NO, APPLI_NO)

);

create table 申請内容の詳細 (
    職員番号          varchar2(10) not null,  -- 親テーブルの STAFF_NO に対応
    申請番号          varchar2(10) not null,  -- 親テーブルの APPLI_NO に対応
    申請内容の詳細    varchar2(100),          -- 申請の詳細内容を格納するカラム
    constraint PK_申請内容の詳細 primary key (職員番号, 申請番号),
    constraint FK_申請内容の詳細 foreign key (職員番号, 申請番号)
        references 申請管理情報 (STAFF_NO, APPLI_NO)
);

insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT) 
values ('1001', 'A001', TO_DATE('2024-02-25', 'YYYY-MM-DD'),'営業');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT) 
values ('1001', 'A002', TO_DATE('2024-02-26', 'YYYY-MM-DD'),'営業');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT) 
values ('1002', 'A003', TO_DATE('2024-02-27', 'YYYY-MM-DD'),'開発');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT) 
values ('1002', 'a003', TO_DATE('2024-01-27', 'YYYY-MM-DD'),'開発');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT) 
values ('1003', 'A004', TO_DATE('2024-02-28', 'YYYY-MM-DD'),'営業');

insert into 申請内容の詳細 (職員番号, 申請番号, 申請内容の詳細)
values ('1001', 'A001', 'レギュラーとハイオク間違えたので、もう一回入れに行きたいです。');
insert into 申請内容の詳細 (職員番号, 申請番号, 申請内容の詳細)
values ('1001', 'A002', 'ガソリン高いから、もっと補助してほしい');
insert into 申請内容の詳細 (職員番号, 申請番号, 申請内容の詳細)
values ('1002', 'A003', 'ハイオク満タンにしちゃった');
insert into 申請内容の詳細 (職員番号, 申請番号, 申請内容の詳細)
values ('1002', 'a003', 'レギュラー満タンにしちゃった');

全体の申請件数を数える

select count(*) as 申請件数
from 申請管理情報;

count(*) は、NULL 値を含めたすべての行を数えます。

as 申請件数 は、カラム名をわかりやすくするためのエイリアスです。

部署ごとの申請件数を数える

select DEPARTMENT, count(*) as 申請件数
from 申請管理情報
group by DEPARTMENT;

group by DEPARTMENT で部署ごとにグループ化し、それぞれの申請件数を数えます。

職員ごとの申請件数を数える

select STAFF_NO, count(*) as 申請件数
from 申請管理情報
group by STAFF_NO;

STAFF_NO ごとに count(*) を使うことで、職員ごとの申請数を取得できます。

詳細情報のある申請件数を数える

select count(*) as 詳細付き申請件数
from 申請内容の詳細;

申請内容の詳細 テーブルにデータがある申請の件数を数えます。

申請内容がある職員ごとの件数

select 職員番号, count(*) as 詳細付き申請件数
from 申請内容の詳細
group by 職員番号;

1001 の職員は2件の申請内容を登録

1002 の職員も2件の申請内容を登録

1003 の職員は申請内容がないため、ここには表示されません。

まとめ

全体のデータ件数を数えるcount(*)

特定のカラムが NULL でない件数を数えるcount(カラム名)

重複を除いたデータ件数を数えるcount(distinct カラム名)

グループごとに集計するgroup by を組み合わせる

筆者
筆者

countについて解説しました。

count 関数を使えば、データの件数を簡単に集計できるので、しっかりと使いこなせるように練習してみてください!

次回もお楽しみに!

この記事を書いた人
たくたく

文系出身・3年目のWeb系エンジニアです。
C#とSQLを得意としています。
同棲生活は2年目に入り、日々仲良く楽しく暮らしています。
プライベートではバイクや車で旅行に行くことが趣味です。
サンリオ好きで、中でもシナモン推しです。
お酒好きとして毎週の晩酌をリラックスタイムにしています。

たくたくをフォローする
SQLエンジニア
シェアする

コメント

タイトルとURLをコピーしました