SQL-pivot、グループ別ソート(case when)
ハッカーランキングの問題
https://www.hackerrank.com/challenges/occupations/problem
АААААААА
サブクエリはsqlで作成されましたが、sqlでより高度な互換性の高いピボットテーブルは作成されていませんが、今日初めてこのタイプの問題に触れて、私は珍しく慌てていましたが、これは私がまた1つ学んだことを意味しています.
すでに始まっている以上、
film
表のデータでさらに勉強することにしました.私はMacBookユーザーです.SQLGateのホームページでmysqlをダウンロード/実行できません.
元手を弁償するって言ったでしょ?直接つながった!ははは🤭
やっぱりちょっと炒めた~
(ソース:https://techblog-history-younghunjo1.tistory.com/159)
これを見ていつもAWSデータベースに接続するように直接応用に成功しました!
MySQLへようこそ~
入力テキストのサンプル・データベース.
23台のテーブルのうち、今日使用されているのは
film
台です.desc film;
どんな顔をしているか見てみましょう
select * from film limit 5;
この映画のデータを使いたいのですが、
G、PG、R等の映画等級(
rating
)を各列に分割して、1つの軸心テーブルを作成し、各等級の賃貸料(release_year
)が高い順に映画カタログを出力する(title
).set @r1=0, @r2=0, @r3=0, @r4=0, @r5=0;
mysqlでこの機能を実現するためにcase when文を使用しました.CASE
WHEN 조건
THEN '반환값'
ELSE 'WHEN 조건에 해당하지 않을 때 반환 값'
END
select max(G) as 'G', max(PG) as 'PG', max(PG_13) as 'PG-13', max(R) as 'R',max(NC_17) as 'NC-17'
from (select case when rating = 'G' Then title else 0 END AS G,
case when rating ='PG' then title else 0 END as PG,
case when rating = 'PG-13' then title else 0 END as PG_13,
case when rating = 'R' then title else 0 END as R,
case when rating = 'NC-17' then title else 0 END as NC_17,
case when rating = 'G' then (@r1:=@r1+1)
when rating = 'PG' then (@r2:=@r2+1)
when rating = 'PG-13' then (@r3:=@r3+1)
when rating = 'R' then (@r4:=@r4+1)
when rating = 'NC-17' then (@r5:=@r5+1)
END as RowNumber
from film
order by rental_rate desc, title) sub
group by RowNumber;
fromセクションのサブクエリでは、case-when文を使用して、小さいサイズを追加したテーブルを作成し、賃貸料(降順)とタイトル順に出力します.一見、アルファベット順と似ているので、賃貸料順で並べ替えているか確認しました.
正しいようですハハ
ふーん、、、sqlの世界も本当に広くて深い...!
でもPandasだけで作られた軸心表をsqlで作ったので不思議で嬉しかったです.
できることが一つ増えた🤓👍
Reference
この問題について(SQL-pivot、グループ別ソート(case when)), 我々は、より多くの情報をここで見つけました https://velog.io/@hangnii/SQL-pivot-행-열-바꾸기case-whenテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol