데이터 처리/SQL 24

DAY 5 / [solvesql] Advent of SQL 2024 2문제 (게임 개발사의 주력 플랫폼 찾기, 전력 소비량 이동 평균 구하기)

게임 개발사의 주력 플랫폼 찾기WITH rnk_tab AS (SELECT * , DENSE_RANK() OVER(PARTITION BY developer_id ORDER BY sum_sales DESC) AS rnkFROM ( SELECT developer_id , platform_id , SUM(sales_na+sales_eu+sales_jp+sales_other) AS sum_sales FROM games GROUP BY developer_id, platform_id ) AS tmp)SELECT c.name AS developer , p.name AS platform , r.sum_sales AS salesFRO..

DAY 4 / [solvesql] Advent of SQL 2024 3문제 (최대값을 가진 행 찾기, 서울숲 요일별 대기오염도 계산하기, 3년간 들어온 소장품 집계하기)

최대값을 가진 행 찾기SELECT idFROM pointsWHERE x = (SELECT MAX(x) FROM points) OR y = (SELECT MAX(y) FROM points)ORDER BY id 해결 방법1. 조건절에 최대값을 작성할 때, 서브쿼리를 이용한다. 서울숲 요일별 대기오염도 계산하기SELECT CASE weekday_num WHEN 0 THEN "월요일" WHEN 1 THEN "화요일" WHEN 2 THEN "수요일" WHEN 3 THEN "목요일" WHEN 4 THEN "금요일" WHEN 5 THEN "토요일" WHEN 6 THEN "일요일" END AS "wee..

DAY 3 / [solvesql] Advent of SQL 2024 3문제 (기증품 비율 계산하기, 온라인 쇼핑몰의 월 별 매출액 집계, 게임 평점 예측하기 1)

기증품 비율 계산하기SELECT ROUND(COUNT(DISTINCT IF(LOWER(credit) LIKE '%gift%', artwork_id, null))*100/COUNT(DISTINCT artwork_id), 3) AS ratioFROM artworks 요점1. credit의 값에 대해 먼저 대소문자 통일을 해줘야 깔끔하게 gift가 포함된 경우를 찾을 수 있다. 정규표현식을 사용한다면 어떻게 작성할 수 있을까?-- 방법 1.SELECT ROUND(COUNT(DISTINCT IF(credit REGEXP '[Gg][Ii][Ff][Tt]', artwork_id, null))*100/COUNT(DISTINCT artwork_id), 3) AS ratioFROM artworks-- 방법 2.SELEC..

DAY 2 / [solvesql] Advent of SQL 2024 3문제 (지자체별 따릉이 정류소 개수 세기, 언더스코어(_)가 포함되지 않은 데이터 찾기, 게임을 10개 이상 발매한 게임 배급사 찾기)

지자체별 따릉이 정류소 개수 세기SELECT local , COUNT(DISTINCT station_id) AS num_stationsFROM stationGROUP BY localORDER BY num_stations 언더스코어(_)가 포함되지 않은 데이터 찾기SELECT DISTINCT page_locationFROM gaWHERE page_location NOT LIKE '%\_%'ORDER BY page_location 요점1. _는 LIKE에서 "임의의 한 글자"로 쓰이기 때문에, 이를 문자 그대로의 언더스코어(_)로 인식시키기 위해서는 역슬래쉬(\)로 escape 처리를 해야한다. 정규표현식을 사용하여 아래와 같이 작성할 수 있다.SELECT DISTINCT page_location..

DAY 1 / [solvesql] Advent of SQL 2024 3문제 (크리스마스 게임 찾기, 펭귄 조사하기, 제목이 모음으로 끝나지 않는 영화)

크리스마스 게임 찾기SELECT game_id , name , yearFROM gamesWHERE name LIKE '%Christmas%' OR name LIKE '%Santa%' 주의할 점1. 조건을 설정할 때 문자열 일치가 아닌 포함되는 것임을 주의했어야 한다.- 제목에 'Christmas'나 'Santa'가 포함되는 게임 찾기 (O)- 제목이 'Christmas'나 'Santa'과 일치하는 게임 찾기 (X) -> LIKE와 '%'를 사용해서 앞이나 뒤에 어떤 문자열이 있던지 없던지 찾고자하는 문자열이 포함되어있는지 확인 [복습노트] 문자열 패턴 찾기 함수https://limhm4907.tistory.com/147 [MySQL] String Functions and Operato..

SQL 실행 순서 (= SQL 논리적 처리 순서)

더보기 FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY "FROM부터 데이터 만든 후, 필터링하고, 그룹핑하고, 최종적으로 SELECT하고, 마지막에 정렬한다." 기본적으로 표준 SQL(ANSI SQL 표준)이 정의한 실행 순서:1. FROM2. WHERE3. GROUP BY4. HAVING5. SELECT6. ORDER BY 어떤 RDBMS이건(Oracle, MySQL, PostgreSQL, SQL Server 등) 이 기본 흐름을 따른다. GROUP BY절에서 SELECT절에 정의한 별칭(alias)을 바로 사용할 수 없다.왜냐하면, GROUP BY는 SELECT보다 먼저 실행되기 때문에 아직 SELECT에서 alias가 정의되기 전이라서 인식할 수가 ..

[SQL] 연산 종류와 우선 순위

일반적인 SQL 연산 우선 순위(RDBMS에 따라 약간의 차이는 있을 수 있음) 1. 괄호2. 산술연산 (단항 부호 > 곱셈,나눗셈,나머지구하 > 덧셈,뺄셈)3. 비교연산 (>=, between, In, Like, ISNULL)4. 논리연산 (NOT > AND > OR) 1. 괄호SELECT 2 + 3 * 4; -- 결과: 14 (괄호가 없어서 곱셈 먼저)SELECT (2 + 3) * 4; -- 결과: 20 (괄호가 있는 덧셈 먼저) 2. 산술 연산 우선 순위 연산자설명예시1-, + (단항)단일 값의 부호-a, +a2*, /, %곱셈, 나눗셈, 나머지a * b, b / c, a % b3+, - (이항)덧셈, 뺄셈a + b, a - c 3. 비교 연산 우선 순위연산자설명예시-..

1 2 3 4