SQL 4週目!
いよいよ4週間!
この授業はいろいろなsubqueryです.
subqueryとは?
これは、クエリー内のクエリーを次のクエリーとして表し、前のクエリーで使用してクエリーを簡単にする方法です.
結論から言えば、やはりすべての授業の中で一番難しいです.
しかしサブクエリをうまく利用すれば、必要なデータを十分に活用できる能力があるので、勉強に励みましょう!
まず、サブクエリを理解する簡単な例を見てみましょう.
私が持っているデータから、カリキュラムをカナダで決済するユーザー情報を見たい場合は、usersテーブルとordersテーブルを結合する必要があります. ordersテーブルには、カナダで支払うuser id のみが表示される.は、私が抽出する上記データの中のuser id情報と一致するユーザデータ のみをユーザテーブルからインポートする.
このときwhere節に入る括弧の部分はqualの中のもう一つのクエリーで、サブクエリーです!
サブクエリはwhereセクション、selectセクション、fromセクションの任意の場所にアクセスできます.
このうちfromセクションが最も多く使用されています.
上記の例は、whereセクションに入るサブクエリの例です.
所有するデータを使用して、checkinsテーブルのcourse id、userid、like、coursestarylikeを平均的に加算します.まずcheckinsテーブル を読み込む. checkins表の中で、各課程のlikeの平均値 を求めますサブクエリ表示するデータのみ抽出
それぞれのデータにマッチさせるために、思わず条件を与えてしまう.
今回は,所有するデータから受講登録情報(登録名id)の全授業数と受講数を出力した.川全体の世紀 受講者数(don=1)世紀
2つのテーブルをinnerjoinにマージ
ここで重要なのは、from節のサーブ品質ごとにalias(別名)を加えることです.上はa,bの!
aliasを貼っていないときにaliasが必要なエラーが発生しました. 表示したいデータのみ取得
そう聞いて一気に調べた.
ここではwithセクションを使用するとfromセクションのサブクエリをより簡単にできるというヒントがあります.
次にwith句を使用して、さっきのfrom句クエリをよりきれいに整理したクエリ文を示します.
次の文のみを実行すると、withセクションにdon tableとtotal tableが定義されていないというエラーが発生します.
このようにサブクエリを学習し,さらにいくつかの有用なクエリを学習した.
case構文は,特定の条件に基づいてデータを区別整理する方法である.
ポイントを5000または10000以上に分けて整理したい場合は、case構文を以下に示すように使用します.
これらの整理された内容を利用して、以下の統計を行うことができる.
上で使用したwith節を使用すると、以下のように簡潔に表現できます. email@のみで始まる email@のみで始まる(ドメイン)
1は区切り記号の前の内容-1は区切り記号の後ろの内容です文字列 の一部のみをインポート
created atでは、1番から10番まで1文字しか持たず、日付で構成されています.
このようにSQLのすべての課程を完成しました!
明日の学習カードで偶然触れたスパルタコードクラブ.
Web開発総合クラスを経て、SQLは2回目の授業です.
スパルタコードクラブは確かに非専門家がコードに近づきやすくするために、できるだけ簡単に分かりやすく授業をしています.あなたのおかげで、いろいろな課題を自分でやってくれてありがとう.(難しすぎると途中で抜けてしまうかも…ううう)
特に、SQLは最初に触れたときに、自分の手でいろいろなデータに触れたり、いろいろな方法を試したりすることができてよかったです.もちろん、SQLを正しく処理するにはかなり複雑になりますが、今回の講義を通じて、私はやはりやってみることができます!自信を得た.
この点では、初めてコードに触れて、コードが怖くて、何かしたい文科生におすすめのレッスンです.しかし、残念なことに、講座をさらに深化させることはできなかった.△少なくとも明日習うカードは…?
Web開発総合クラスのプロジェクトグループのように、SQL教室でもより多くの人ができる課題やプロジェクトがあることを望んでいます.
将来、私たちは引き続きSQLを勉強して、Pythonを使ってデータの可視化を勉強して、あるいはいっそ他の開発を勉強して、データではありませんが、私たちは引き続きコードを放棄しないように努力します!
これは私にコードに興味を持たせたので、スパルタコードクラブに感謝しきれません:)
https://spartacodingclub.kr/?f_name=%EC%9D%B4%EB%8B%A8%EB%B9%84&f_uid=5f712c03affe4f0009c6ebb0
この授業はいろいろなsubqueryです.
subqueryとは?
これは、クエリー内のクエリーを次のクエリーとして表し、前のクエリーで使用してクエリーを簡単にする方法です.
結論から言えば、やはりすべての授業の中で一番難しいです.
しかしサブクエリをうまく利用すれば、必要なデータを十分に活用できる能力があるので、勉強に励みましょう!
まず、サブクエリを理解する簡単な例を見てみましょう.
サブクエリの例
私が持っているデータから、カリキュラムをカナダで決済するユーザー情報を見たい場合は、usersテーブルとordersテーブルを結合する必要があります.
select u.user_id, u.name, u.email from users u
inner join orders o on u.user_id = o.user_id
where o.payment_method = 'kakaopay'
ただし、上記の内容は、joinを用いず、以下の手順で行うことができる.select user_id from orders
where payment_method = 'kakaopay'
select u.user_id, u.name, u.email from users u
where u.user_id in (
select user_id from orders
where payment_method = 'kakaopay'
)
これによりjoinを使用する必要がなく、必要なデータを得ることができます.このときwhere節に入る括弧の部分はqualの中のもう一つのクエリーで、サブクエリーです!
サブクエリはwhereセクション、selectセクション、fromセクションの任意の場所にアクセスできます.
このうちfromセクションが最も多く使用されています.
上記の例は、whereセクションに入るサブクエリの例です.
selectセクションサブクエリの例
所有するデータを使用して、checkinsテーブルのcourse id、userid、like、coursestarylikeを平均的に加算します.
select * from checkins c
select course_id, avg(c2.likes) from checkins c2
group by course_id
select checkin_id, course_id, user_id, likes,
(select avg(c2.likes) from checkins c2
where c.course_id = c2.course_id)
from checkins c
2番目に作成したクエリー文をサブクエリーとして使用すると、selectに挿入して必要なデータセットに抽出できます.それぞれのデータにマッチさせるために、思わず条件を与えてしまう.
fromセクションサブクエリの例
今回は,所有するデータから受講登録情報(登録名id)の全授業数と受講数を出力した.
select enrolled_id, count(*) as total_cnt from enrolleds_detail ed
group by enrolled_id
select enrolled_id, COUNT(*) as done_cnt from enrolleds_detail ed
where done = '1'
group by enrolled_id
2つのテーブル
select * from (
select enrolled_id, COUNT(*) as done_cnt from enrolleds_detail ed
where done = '1'
group by enrolled_id
) a inner join (
select enrolled_id, count(*) as total_cnt from enrolleds_detail ed
group by enrolled_id
) b on a.enrolled_id = b.enrolled_id
ここで重要なのは、from節のサーブ品質ごとにalias(別名)を加えることです.上はa,bの!
aliasを貼っていないときにaliasが必要なエラーが発生しました.
select a.enrolled_id, a.done_cnt, b.total_cnt from (
select enrolled_id, COUNT(*) as done_cnt from enrolleds_detail ed
where done = '1'
group by enrolled_id
) a inner join (
select enrolled_id, count(*) as total_cnt from enrolleds_detail ed
group by enrolled_id
) b on a.enrolled_id = b.enrolled_id
そう聞いて一気に調べた.
ここではwithセクションを使用するとfromセクションのサブクエリをより簡単にできるというヒントがあります.
次にwith句を使用して、さっきのfrom句クエリをよりきれいに整理したクエリ文を示します.
with done_table as (
select enrolled_id, COUNT(*) as done_cnt from enrolleds_detail ed
where done = '1'
group by enrolled_id
), total_table as (
select enrolled_id, count(*) as total_cnt from enrolleds_detail ed
group by enrolled_id
)
select a.enrolled_id, a.done_cnt, b.total_cnt from done_table a
inner join total_table b on a.enrolled_id = b.enrolled_id
withセクションを使用する場合、実行するには全体的なドラッグ&ドロップが必要です.次の文のみを実行すると、withセクションにdon tableとtotal tableが定義されていないというエラーが発生します.
このようにサブクエリを学習し,さらにいくつかの有用なクエリを学習した.
付加1)case構文
case構文は,特定の条件に基づいてデータを区別整理する方法である.
ポイントを5000または10000以上に分けて整理したい場合は、case構文を以下に示すように使用します.
select pu.point_user_id, pu.point,
case
when pu.point > 10000 then '1만 이상'
when pu.point > 5000 then '5천 이상'
else '5천 미만'
END as lv
from point_users pu
これらの整理された内容を利用して、以下の統計を行うことができる.
select lv, count(*) as cnt from (
select pu.point_user_id, pu.point,
case
when pu.point > 10000 then '1만 이상'
when pu.point > 5000 then '5천 이상'
else '5천 미만'
END as lv
from point_users pu
) a
group by lv
上で使用したwith節を使用すると、以下のように簡潔に表現できます.
with point_cnt as (
select pu.point_user_id, pu.point,
CASE
when pu.point > 10000 then '1만 이상'
when pu.point > 5000 then '5천 이상'
else '5천 미만'
end as lv
from point_users pu
)
select lv, count(*) as cnt from point_cnt
group by lv
追加2)クリップ文字列
select SUBSTRING_INDEX(email, '@', 1) from users
select SUBSTRING_INDEX(email, '@', -1) from users
1は区切り記号の前の内容-1は区切り記号の後ろの内容です
select order_no, created_at, substring(created_at,1,10) as date
from orders
created atでは、1番から10番まで1文字しか持たず、日付で構成されています.
このようにSQLのすべての課程を完成しました!
4週間を終えたスパルタエンコーディングクラブの短い後記です!
明日の学習カードで偶然触れたスパルタコードクラブ.
Web開発総合クラスを経て、SQLは2回目の授業です.
スパルタコードクラブは確かに非専門家がコードに近づきやすくするために、できるだけ簡単に分かりやすく授業をしています.あなたのおかげで、いろいろな課題を自分でやってくれてありがとう.(難しすぎると途中で抜けてしまうかも…ううう)
特に、SQLは最初に触れたときに、自分の手でいろいろなデータに触れたり、いろいろな方法を試したりすることができてよかったです.もちろん、SQLを正しく処理するにはかなり複雑になりますが、今回の講義を通じて、私はやはりやってみることができます!自信を得た.
この点では、初めてコードに触れて、コードが怖くて、何かしたい文科生におすすめのレッスンです.しかし、残念なことに、講座をさらに深化させることはできなかった.△少なくとも明日習うカードは…?
Web開発総合クラスのプロジェクトグループのように、SQL教室でもより多くの人ができる課題やプロジェクトがあることを望んでいます.
将来、私たちは引き続きSQLを勉強して、Pythonを使ってデータの可視化を勉強して、あるいはいっそ他の開発を勉強して、データではありませんが、私たちは引き続きコードを放棄しないように努力します!
これは私にコードに興味を持たせたので、スパルタコードクラブに感謝しきれません:)
https://spartacodingclub.kr/?f_name=%EC%9D%B4%EB%8B%A8%EB%B9%84&f_uid=5f712c03affe4f0009c6ebb0
Reference
この問題について(SQL 4週目!), 我々は、より多くの情報をここで見つけました https://velog.io/@sweetrain/SQL-4주차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol