データエンジニアリング入門キット第2週コース概要
宿題をする
PostgreSQL
MySQLで使用されているSQL文とほぼ同じですが、他の部分もあります.
アノテーション処理
注釈処理行の注釈は、
--以前とは関係なく、--を書いてからコメントします
SQL文でコメント処理をしたことがないのでわかりません.
複数行注釈処理は
「(二重引用符quotes)」
MySQLでWHERE文を書く場合、検索する値文字列を保護するために常に「書く」、ここで「書く」はカラム名やテーブル名などの識別子に使用されます.
( https://yahwang.github.io/posts/mysql-vs-postgres )
現在の実験環境(colab)では
case-insensitive vs. case-sensitive
「MySQLは大文字と小文字を区別しません.」ハロー=「ハロー」が成立します.
「PostgreSQLは大文字と小文字を区別します.」「Hello」=「Hello」は成立しません.
DATE, COUNT
SELECT DATE(ts) date, COUNT(sessionID)
上記のオーバーヘッドとしてDATEを使用すると、tsという名前のカラム(フィールド)のタイムスタンプ値から後のタイムセクションを減算し、yyy-mm-dd形式で日付値のみをロードし、「date」という名前のカラムで表示できます.
上のSELECT文のCOUNTでは、日付ごとに1つのセッションIDを数えて、同じ日付に対応するセッションIDが何個あるかを表示できます.
COUNT(1) COUNT(*) COUNT(NULL) COUNT(columnname)
https://ryean.tistory.com/10
GROUP BY,ORDER BYにおける1,2の表現
GROUP BY 1
ORDER BY 1
このようなSQL文を見て、うん?と思ったら、
名前に関係のないSELECTの1番目の項目を1、2番目の項目を2と表すことができます!
DISTINCT
SELECTの列名の前にDISTINTがあるので、これを貼るとユニークな値(重複データ削除)SELECTしか与えられないと思いました.
WHEREゲートvs.ilike
likeは大文字と小文字を区別し、ilikeは大文字と小文字を区別しない.
WHERE channel ilike '%o%'
一緒に使用すると、小文字oまたは大文字Oを含むchannel内のすべての文字列を検索することを示します.
キーワード?month
monthをyearmonthやaaaなどの他の単語に変えて、
PostgreSQL
MySQLで使用されているSQL文とほぼ同じですが、他の部分もあります.
アノテーション処理
注釈処理行の注釈は、
--
を使用する.--以前とは関係なく、--を書いてからコメントします
SQL文でコメント処理をしたことがないのでわかりません.
複数行注釈処理は
/* */
である.(SQL共通)「(二重引用符quotes)」
MySQLでWHERE文を書く場合、検索する値文字列を保護するために常に「書く」、ここで「書く」はカラム名やテーブル名などの識別子に使用されます.
( https://yahwang.github.io/posts/mysql-vs-postgres )
現在の実験環境(colab)では
SELECT *
FROM raw_data.user
WHERE userid = "184"
このように書くと、文法に文法エラーが発生し、184というcolumnは存在しません.SELECT *
FROM raw_data.user
WHERE userid = 184
또는
SELECT *
FROM raw_data.user
WHERE userid = '184'
一緒に使うと使いやすいです.case-insensitive vs. case-sensitive
「MySQLは大文字と小文字を区別しません.」ハロー=「ハロー」が成立します.
「PostgreSQLは大文字と小文字を区別します.」「Hello」=「Hello」は成立しません.
DATE, COUNT
SELECT DATE(ts) date, COUNT(sessionID)
上記のオーバーヘッドとしてDATEを使用すると、tsという名前のカラム(フィールド)のタイムスタンプ値から後のタイムセクションを減算し、yyy-mm-dd形式で日付値のみをロードし、「date」という名前のカラムで表示できます.
上のSELECT文のCOUNTでは、日付ごとに1つのセッションIDを数えて、同じ日付に対応するセッションIDが何個あるかを表示できます.
COUNT(1) COUNT(*) COUNT(NULL) COUNT(columnname)
https://ryean.tistory.com/10
GROUP BY,ORDER BYにおける1,2の表現
GROUP BY 1
ORDER BY 1
このようなSQL文を見て、うん?と思ったら、
名前に関係のないSELECTの1番目の項目を1、2番目の項目を2と表すことができます!
DISTINCT
SELECTの列名の前にDISTINTがあるので、これを貼るとユニークな値(重複データ削除)SELECTしか与えられないと思いました.
COUNT(DISTINCT userid)
と一緒に使用できます.WHEREゲートvs.ilike
likeは大文字と小文字を区別し、ilikeは大文字と小文字を区別しない.
WHERE channel ilike '%o%'
一緒に使用すると、小文字oまたは大文字Oを含むchannel内のすべての文字列を検索することを示します.
キーワード?month
SELECT TO_CHAR(st.ts, 'YYYY-MM') month, COUNT(DISTINCT usc.userID) MAU
FROM raw_data.session_timestamp st
JOIN raw_data.user_session_channel usc ON st.sessionID = usc.sessionID
GROUP BY 1
ORDER BY 1
LIMIT 10;
例を少し変えて、上のように書いて、syntax errorがずっと現れて、何が起こったのか分からないが、monthという言葉は問題だった.monthをyearmonthやaaaなどの他の単語に変えて、
TO_CHAR(st.ts, 'YYYY-MM') AS month
に「AS」と明記すれば、うまく機能します.Reference
この問題について(データエンジニアリング入門キット第2週コース概要), 我々は、より多くの情報をここで見つけました https://velog.io/@danceintherain/데이터-엔지니어링-스타터-키트-2주차-강의-정리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol