SQL(40)
-
[SQL] 임시 테이블 생성 - WITH
기존에 원하는 결과 테이블을 얻기 위해 'SUBQUERY(하위 쿼리)' 를 자주 사용하였는데, 하위 쿼리를 여러 개 사용하다보면 쿼리 작성이 복잡해지는 경우를 겪었고 이 문제를 해결하기 위해 'WITH' 을 사용하게 되었다. WITH 은 'Commont Table Expressions(CTE, 공통 테이블 표현식)' 이라고도 말하는 함수이다. 'CTE' 는 단일 문의 범위 내에 존재하며, 해당 단일 문 안에서 여러 번 참조 가능한 '임시 결과 집합(임시 테이블, 가상 테이블)' 이라 한다. 1. 기본 문법// 임시 테이블(= 가상 테이블)WITH 임시테이블명1 AS ( SELECT 컬럼명... FROM 테이블명), 임시테이블명2 AS ( SELECT 컬럼명... FROM 테이블명)/..
2024.09.11 -
[SQL] 그룹별 데이터 합치기 - GROUP_CONCAT
데이터를 한 문자열로 합칠 때 CONCAT 을 사용해 만들 수 있었다. 이번에는 그룹별 컬럼이 가지고 있는 데이터를 하나로 합치는 GROUP_CONCAT 에 대해서 알아보자. 1. 기본 문법SELECT 그룹할 컬럼명, GROUP_CONCAT(지정컬럼명 SEPARATOR 구분자) 별명FROM 테이블명GROUP BY 그룹할 컬럼명 일단 해당 함수를 사용하려면 GROUP BY 절을 사용해 데이터를 그룹화 해야한다. 그렇기에 기본 문법에 GROUP BY 절을 추가해 두었다. 기능은 기존 CONCAT 과 같지만 GROUP_CONCAT 은 집계 함수라는 점이 다르다. 그룹화 된 컬럼의 데이터들을 합쳐 한 문자열 데이터(LONGTEXT)로 출력하는 기능을 가지고 있다. SEPARATOR 의 경우 원하는 구분자가 ..
2024.08.30 -
[SQL] 실수 데이터 다루기 - ROUND, FLOOR, CEILING, TRUNCATE
SQL 에 실수 데이터를 다루면서, 반올림, 올림, 버림 등의 연산이 필요할 때가 있다. 해당 기능을 함수들이 당연히 SQL 에도 구현이 되어있다. 오늘은 그 함수들에 대해서 알아보도록 하자. 1. 기본 문법SELECT ROUND(컬럼명, 남길위치) 별명, CEILING(컬럼명) 별명, FLOOR(컬럼명) 별명, TRUNCATE(컬럼명, 남길위치) 별명FROM 테이블명 각 함수에 대한 설명은 아래와 같다.ROUND : 반올림 함수, 소수점 'n+1' 번째 값에서 반올림한다(n 은 지정값). 소수점 이후의 위치는 '1' 부터 시작으로 정수(1의 자리)가 '0' 의 위치라 생각하면 편하다. 만약 소수점 3번째 자리에서 반올림을 하고 싶다면 '2' 를 지정값으로 사용하면 된다..
2024.08.25 -
[사전캠프] SQL 연습문제 - 7
문제 : 문제 설명iduser_namesatisfaction_scorefeedback_date1르탄이52023-03-012배캠이42023-03-023구구이32023-03-014이션이52023-03-035구구이42023-03-04[lol_feedbacks(LOL 피드백) 테이블]Q1. 만족도 점수(satisfaction_score)에 따라 피드백을 내림차순으로 정렬하는 쿼리 작성SELECT *FROM lol_feedbacksORDER BY satisfaction_score ORDER BY 를 사용해 만족도 점수를 기준으로 테이블을 내림차순 정렬하였다. Q2. 각 유저별 최신 피드백을 찾는 쿼리 작성SELECT user_name, MIN(feedback_date) recent_feedback_dateFRO..
2024.08.22 -
[사전캠프] SQL 연습문제 - 6
문제 :아래의 테이블을 참고해 문제 해결을 위한 SQL 문을 작성하자.idnameregionratingjoin_date1르탄이한국13002019-06-152배캠이미국15002020-09-013구구이한국14002021-01-074이션이미국13502019-11-15[lol_users(LOL 유저) 테이블]Q1. 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성한다. 전체 지역(region) 기준으로 순위는 레이팅이 높을 수록 높아야한다.SELECT name, RANK() OVER (ORDER BY rating DESC) rankingFROM lol_users 각 유저에 대한 순위란 말만 있어 각 유저의 이름(name)에 해당하는 순위를 내림차순으로 매긴 결과를 조회하는 쿼리를 작성하였다...
2024.08.22 -
[SQL] 날짜/시간 데이터 포맷 다루기 - DATE, TIME, DATE_FORMAT
날짜 및 시간 데이터 타입에는 'timestamp', 'datetime', 'date' 등 여러가지 타입이 존재한다. 이번에는 이 날짜/시간 데이터 타입과 형식을 변환하는 것에 대해 정리하고자 한다. 1. 기본 문법SELECT DATE(지정칼럼명) 별명, TIME(지정칼럼명) 별명, DATE_FORMAT(지정칼럼명 또는 값, 구분기호) 별명FROM 테이블명 'DATE' 과 'TIME' 의 경우 날짜/시간 형식의 데이터를 각각 DATE 타입과 TIME 타입으로 변환하는 함수이다. 'DATE_FORMAT' 의 경우 컬럼 또는 데이터를 구분기호에 맞추어 특정형식을 갖춘 문자 데이터로 변환하는 기능을 가졌다. 해당 함수에 사용되는 구분기호는 아래와 같다.구분기호역할 구분기호역할%Y년도 (..
2024.08.21