본문 바로가기

🛠️Skill/SQL29

[SQL문법] RANGE BETWEEN AND / UNBOUNDED PRECEDING / FOLLOWING RANGE BETWEEN 과 AND 사이에 사용 UNBOUNDED PRECEDING : 최종 출력될 값의 맨 처음 row의 값 CURRENT ROW : 현재 row UNBONDED FOLLOWING : 최종 출력될 값의 맨 마지막 row의 값 숫자 PRECEDING AND 숫자 FOLLOWING : 숫자만큼 위, 아래 row의 값 ex) between 1 preceding and 1 following -- 바로 위, 아래 row의 값 디폴트는 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 이다. 리트코드 문제 예제 2023.04.19 - [분류 전체보기] - [leetcode] 601. Human Traffic of Stadium / 연속된 숫자 3개 이상 [l.. 2023. 4. 8.
[SQL문법] WHERE 조건절과 JOIN의 ON의 차이점 WHERE 조건절과 JOIN의 ON의 차이점은 JOIN하는 범위가 다르다. 예시 1. WHERE 절에 조건을 넣으면 t1과 t2 테이블을 그냥 조인하고, t2의 컬럼이 10 이상인것들만 출력한다. # 1 SELECT * FROM table t1 LEFT JOIN table2 t2 ON (t1.col = t2.col) WHERE t2.col >= 10; 2. t1 테이블과 t2 테이블 중 col이 10 이상인 경우만 조인해서 출력한다. # 2 SELECT * FROM table t1 LEFT JOIN test2 t2 ON (t1.col = t2.col AND t2.col >= 10); ON : JOIN 하기 전 필터링을 한다 (=ON 조건으로 필터링이 된 레코들간 JOIN이 이뤄진다) WHERE : JOI.. 2023. 3. 9.
[SQL문법] UNION, UNION ALL / 친구가 가장 많은 사람 구하기 - 602. Friend Requests II SELECT문 결과를 합치기위해 UNION, UNION ALL을 사용하면 된다. 차이점 UNION 사용시 중복을 제거하고, 합쳐져서 출력됨 UNION ALL 사용시 중복까지 모두 포함해서 출력됨 조건 1️⃣ 각 쿼리의 컬럼 수와 데이터 타입이 일치해야 한다. 2️⃣ 첫 번재 쿼리의 별칭(AS)으로 결과가 출력된다. 두번째 쿼리는 별칭을 생략할 수 있고, 별칭을 지정해도 첫번째 쿼리의 별칭으로 결과가 출력된다. 3️⃣ ORDER BY는 쿼리 마지막에 사용하고, 합쳐진 모든 결과를 정렬한다. 별칭 및 컬럼 순번으로 정렬 가능 (A.col 불가능) SELECT 'park' AS last_name -- 첫번째 쿼리의 별칭으로 출력됨 , salary AS sal FROM emp GROUP BY dep UNION .. 2023. 1. 17.
[SQL문법] COALESCE : null이 아닌 첫번째 값 반환 COALESCE : null이 아닌 첫번째 값 반환 형식 SELECT COALESCE(Column명, Column명이 NULL인 경우 대체할 값) FROM 테이블명 # Column1 ~ 4 중 NULL이 아닌 첫 번째 Column을 출력 SELECT COALESCE(Column명1, Column명2, Column명3, Column명4) FROM 테이블명 예시 리트코드 문제 2023.01.15 - [Data Analytics/CodingTest] - [leetcode] 577. Employee Bonus / COALESCE [leetcode] 577. Employee Bonus / COALESCE 577. Employee Bonus https://leetcode.com/problems/employee-bo.. 2023. 1. 10.
[SQL문법] SET 변수 사용하기 / MySQL SET 문법 SET @변수명 = 변수값; --변수 선언, 변수값 입력 SET @변수명 := 대입값; --변수 선언, 변수에 넣을 값 SELECT @변수명; --변수 출력 SET함수 예시1 - 프로그래머스 문제 0시부터 23시까지 조회하려고 하지만 테이블에 0~6시 데이터가 없어서 SET함수로 만들어주려고 한다. SET @HOUR = -1 -- HOUR이라는 변수에 -1을 넣어둠 SELECT (@HOUR := @HOUR +1) AS HOUR -- -1을 넣어둔 HOUR에 1씩 대입하면 0,1,2,3..이 HOUR에 입력된다. FROM animal_outs WHERE @HOUR < 23; -- 22+1=23으로 끝나는 조건 입력 https://dataanalysisdot.tistory.com/77 [프로그래.. 2023. 1. 5.
[SQL 문제] 요일별 매출액, 최초/마지막 주문일, 요일별 매출액 평균 1. 요일별 매출액 집계. 매출액은 반올림하여 소수점 둘째자리까지만 출력 SELECT day , ROUND(SUM(total_bill)) as 매출액 FORM tips GROUP BY day -- 요일별 Q. 아래 형식에 맞춰 요일별, 시간대별 매출액을 집계해주세요. 매출액은 반올림하여 소수점 둘째자리까지만 출력해주세요. day lunch dinner Sun Sat Thur Fri SELECT day, round(sum(if(time = "Lunch", total_bill, 0)),2) as Lunch, round(sum(if(time = "Dinner", total_bill, 0)),2) as Dinner FROM tips GROUP BY day 2. 첫번째 주문일자(min), 마지막 주문일자(max).. 2022. 12. 15.