Yuki's Tech Blog

仕事で得た知見や勉強した技術を書きます。

leet codeのSQL問題を1日1題解く【1068. Product Sales Analysis I】

目次

初めに

今日もSQLの問題を解いて行きます。

問題

leetcode.com

セットアップ

以下のSQL文をローカル環境で実行します。

Create table If Not Exists Sales (sale_id int, product_id int, year int, quantity int, price int);
Create table If Not Exists Product (product_id int, product_name varchar(10));
Truncate table Sales;
insert into Sales (sale_id, product_id, year, quantity, price) values ('1', '100', '2008', '10', '5000');
insert into Sales (sale_id, product_id, year, quantity, price) values ('2', '100', '2009', '12', '5000');
insert into Sales (sale_id, product_id, year, quantity, price) values ('7', '200', '2011', '15', '9000');
Truncate table Product;
insert into Product (product_id, product_name) values ('100', 'Nokia');
insert into Product (product_id, product_name) values ('200', 'Apple');
insert into Product (product_id, product_name) values ('300', 'Samsung');

知らなかった or 理解があやふやな知識

内部結合の省略について

JOINのディフォルトが内部結合なのでINNERが省略可能で、左外部結合・右外部結合・完全外部結合のときにOUTERが省略可能なんだよな。

SELECT a,b FROM AAA       INNER JOIN BBB ON b = a
                          ----- 省略可能
SELECT a,b FROM AAA LEFT  OUTER JOIN BBB ON b = a
                          ----- 省略可能
SELECT a,b FROM AAA RIGHT OUTER JOIN BBB ON b = a
                          ----- 省略可能
SELECT a,b FROM AAA FULL  OUTER JOIN BBB ON b = a
                          ----- 省略可能

babydaemons.hatenablog.com

INNER JOINをJOINと書いた場合、同じように内部結合が実行されるので、覚えておきましょう。 (LEFT OUTER JOINなどの外部結合でも、OUTERの部分は省略できる)

また、内部結合についてはこちらの記事で深ぼっています。

yukihaga.hatenablog.com

解答

以下のSQL文を実行したら、無事クリアできました。

SELECT P.product_name, S.year, S.price
FROM Sales AS S
INNER JOIN Product AS P
ON S.product_id = P.product_id 

終わり

明日もやります!

参考記事