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

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

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

ふりかえり

筆者
筆者

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

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

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

A子
A子

本編に入ります!

row number partition byの基本構文

筆者
筆者

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

row_number() over(partition by グループにしたい列 order by 並べたい列)

partition by:どのグループごとに番号を振るか(グループ分け)

order by:番号をどの順で振るか(並び順)

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

筆者
筆者

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

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

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

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

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

A子
A子

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

貼ってあるよ!

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

参照できます!

Oracle Live SQLで実行していきます!

今回、実行するSQLの一覧

CREATE TABLE

create table employees (
    employee_id varchar2(10),
    department  varchar2(20),
    hire_date   date
);

INSERT

insert into employees (employee_id, department, hire_date) values ('A001', '総務', to_date('2020-01-01', 'yyyy-mm-dd'));
insert into employees (employee_id, department, hire_date) values ('A002', '総務', to_date('2020-03-01', 'yyyy-mm-dd'));
insert into employees (employee_id, department, hire_date) values ('B001', '開発', to_date('2019-05-01', 'yyyy-mm-dd'));
insert into employees (employee_id, department, hire_date) values ('B002', '開発', to_date('2021-04-01', 'yyyy-mm-dd'));

SQL(最古の入社者を各部署で1名)

with ranked_employees as (
    select
        employee_id,
        department,
        hire_date,
        row_number() over(partition by department order by hire_date) as rn
    from
        employees
)
select
    employee_id,
    department,
    hire_date
from
    ranked_employees
where
    rn = 1;

項目内容
with ranked_employees as (...)サブクエリで、各部署ごとに連番を付ける(古い順)
partition by department部署ごとにグループ化
order by hire_date入社日が早い人が先頭になるように並べる
where rn = 1各部署の中で一番早く入社した人だけを抽出

最新データを取りたい場合は?

order by hire_date desc にするだけでOK!

row_number() over(partition by department order by hire_date desc) as rn

まとめ

筆者
筆者

row number partition byについて解説しました。

次回もお楽しみに!

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

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

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

コメント

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