[プログラマー]SQL高得点Kit整理
9028 ワード
プログラマーSQLのハイスコアKitを解くときに知らなかった部分を整理した内容です
カラムの値がNULLを返すと、別の値として出力されます.
条件式によってカラムの値を決定し、条件に基づいてカラムの値を変換します.
GROUP BYセクションとともに使用される条件セクション
日付を指定した形式で出力
2つ以上のテーブルをグループ化するには、次の手順に従います.ORDER BYは1つしか使用できません. 各SELECTの列数、式は同じでなければならない. SELECTゲート間の順序は関係ありません. Unionの結果が重複すると1つしか現れません.(DEFAULT) カラムのタイプは同じか、戻ることができます. 重複値を表示する場合は、UNIOALL を使用します.
UNION重複ROWを消去する. UNIOALLで重複ROWは解消されません. 従ってユニオンALLの速度はユニオンよりも速い.
仮想テーブルの作成(データベースに格納されているテーブルではありません)
サブクエリで参照自体を作成する仮想テーブル2番目のSELECT文では仮想テーブル名が参照されているため、再帰的に参照できます ユニオンALLを使用して2つのSELECT文をマージします.
せいけいかん
内部結合INNER JOINは、あるテーブルのカラムが重複している場合に重複する値を返します. したがって、JOINは2つ以上のテーブルをマージするので、マージされたテーブルに同じカラムがある場合は「テーブル名」となります.テーブル名は「列名」形式で指定する必要があります. INNERJOINはNULLを返さない. は、通常、有限列セットで一致し、2つのテーブルの1つ以上の行を返す演算子です.
交差INTERSECT重複除外 INTERSECTはNULLを返します. 集合の演算子に基づいて、2つの集合の間の完全な行を比較するために使用され、2つ以上の集合のうちの小さな集合の行を返すことはできません. 参考資料 DATE_FORMAT
https://wakestand.tistory.com/555 UNION
https://iamzombie.tistory.com/35
https://futurists.tistory.com/18
https://jmkim.tistory.com/50 CAST & CONVERT
https://hajoung56.tistory.com/19 INNER JOIN vs INTERSECT
https://stackoverflow.com/questions/51775718/is-there-a-fundamental-difference-between-intersect-and-inner-join
1. IFNULL
カラムの値がNULLを返すと、別の値として出力されます.
SELECT IFNULL(컬럼명, "Null일 경우 대체 값") FROM 테이블명
2. CASE
条件式によってカラムの値を決定し、条件に基づいてカラムの値を変換します.
CASE
WHEN 조건식1 THEN 식1
WHEN 조건식2 THEN 식2
...
ELSE 조건에 맞는경우가 없는 경우 실행할 식
END
CASE 컬럼명
WHEN 비교값 THEN 식1
WHEN 비교값 THEN 식2
...
ELSE 조건에 맞는경우가 없는 경우 실행할 식
END
3. HAVING
GROUP BYセクションとともに使用される条件セクション
SELECT 컬럼, 그룹 함수(컬럼)
FROM 테이블명
GROUP BY Group대상
HAVING 그룹 함수 포함 조건
4. DATE_FORMAT
日付を指定した形式で出力
SELECT DATE_FORMAT(날짜시간값, 원하는포맷) FROM 테이블명
5. UNION
2つ以上のテーブルをグループ化するには、次の手順に従います.
SELECT name FROM my_table1
UNION
SELECT name FROM my_table2
UNION
SELECT name FROM my_table3;
ルール#ルール#
UNION (DISTINCT) vs UNION ALL
6. WITH
仮想テーブルの作成(データベースに格納されているテーブルではありません)
WITH 가상테이블명 (컬럼명1, 컬럼명2) AS
SELECT 쿼리
7. WITH RECURSIVE
サブクエリで参照自体を作成する仮想テーブル
WITH RECURSIVE 가상테이블명 (n) AS
(
SELECT 1 - 최초 행 반환
UNION ALL
SELECT n + 1 FROM 가상테이블명 WHERE n < 5 - 추가 행 반환
)
SELECT * FROM 가상테이블명;
8. CAST & CONVERT
せいけいかん
CAST(변환하고싶은 데이터 AS 데이터형식[(길이)])
CONVERT(변환하고싶은 데이터, 데이터형식[(길이)])
ex.
SELECT CAST(20211014 AS DATE);
> 2021-10-14
SELECT CONVERT(20211014, DATE);
> 2021-10-14
9. INNER JOIN vs INTERSECT
INNER JOIN
内部結合
SELECT 컬럼명
FROM 테이블명1
INNER JOIN 테이블명2
ON 조인 조건
WHERE 검색조건
INTERSECT
交差
SELECT 컬럼명 FROM 테이블명1
INTERSECT
SELECT 컬럼명 FROM 테이블명2
https://wakestand.tistory.com/555
https://iamzombie.tistory.com/35
https://futurists.tistory.com/18
https://jmkim.tistory.com/50
https://hajoung56.tistory.com/19
https://stackoverflow.com/questions/51775718/is-there-a-fundamental-difference-between-intersect-and-inner-join
Reference
この問題について([プログラマー]SQL高得点Kit整理), 我々は、より多くの情報をここで見つけました https://velog.io/@serajang99/프로그래머스-SQL-고득점-Kit-정리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol