SQL(40)
-
[SQL] WINDOWS FUNCTION - RANK
지금까지 배운 SQL 함수들로 다양한 조건을 만족하는 결과를 조회하는 쿼리문들을 작성했지만 이보다 더 쉽게, 시간을 절약할 수 있게끔 도와주는 'WINDOWS FUNCTION' 에 대하여 정리해보려 한다. '윈도우 함수' 라고도 불리는데 해당 함수에는 하나의 함수가 아닌 여러 함수들의 집합으로 '윈도우 함수' 에 해당하는 여러 함수들이 있다. 한 번에 모든 함수들을 정리하기보다 필요에 따라 학습하게 된 '윈도우 함수' 를 그 때마다 추가로 정리할 생각이다. 1. 기본 문법SELECT 윈도우함수명(지정칼럼명) OVER (PARTITION BY 분류할 컬럼명 ORDER BY 정렬 기준) 'WINDOWS FUNCTION' 은 각 행의 관계를 정의하기 위한 함수라고 한다. 일반적으로 위와 같은 방식으로 사용된..
2024.08.21 -
[사전캠프] SQL 연습문제 - 5
문제 : 아래의 테이블을 참고해 문제 해결을 위한 SQL 문을 작성하자.idnamestart_dateend_dateaws_cost1일조2023-01-012023-01-07300002꿈꾸는이조2023-03-152023-03-22500003보람삼조2023-11-202023-11-30800004사조참치2022-07-012022-07-3075000[team_projects(프로젝트) 테이블]Q1. AWS 예산(aws_cost)이 40000 이상 들어간 프로젝트들의 이름을 선택하는 쿼리 작성SELECT nameFROM team_projectsWHERE aws_cost >= 40000 'team_projects' 테이블에서 'aws_cost' 가 40000 이상인 레코드들에서 'name' 컬럼을 조회환 결과를 출..
2024.08.20 -
[SQL] 데이터 병합 - COALESCE
해당 함수는 NULL 값을 대체하기 위해 사용한다 배워 찾아보니 해당 목적이 주가 아니어서 이렇게 따로 정리하게 되었다. 물론 NULL 값 대체의 기능을 가지고 있지만 본디 주 목적은 두 컬럼을 합치는 기능을 하는 함수라고 한다. 1. 기본 문법SELECT COALESCE(병합컬럼명1, 병합컬럼명2) 별명, // 방법 - 1 COALESCE(값1, 값2) 별명 // 방법 - 2FROM 테이블명 해당 함수의 작동 기준은 NULL 이다. 두 컬럼을 지정하면 아래와 같은 결과를 보인다.두 컬럼 값이 모두 NULL 일 경우 : NULL 이 병합컬럼 값이 됨두 컬럼 중 하나의 컬럼 값이 NULL 인 경우 : NULL 아닌 쪽의 컬럼 값이 병합컬럼 값이 됨두 컬럼 값이 모두 NULL ..
2024.08.20 -
[사전캠프] 이용자의 포인트 조회하기
문제 : 두 테이블에서 각 이용자의 아이디, 이메일, 총 포인트를 조회하는 쿼리 작성조건 : 결과 조회시 이용자의 아이디, 이메일, 총 포인트에 대한 컬럼이 조회되어야 하며, 획득한 포인트가 없는 이용자에 대한 정보도 포함하여 출력해야 한다. 마지막으로 출력 결과는 총 포인트 기준으로 내림차순 정렬되어야 한다.SELECT a.user_id, a.email, SUM(b.point) pointFROM users a LEFT JOIN point_users b ON a.user_id = b.user_idGROUP BY 1ORDER BY point DESC 대상 테이블은 'users(이용자 정보)', 'point_users(사용자 포인트 획득 정보)' 테이블이며, 'user_id(이용자 아이디)', 'email..
2024.08.19 -
[SQL] 테이블 합치기 - JOIN
테이블은 목적에 따라 여러 속성을 가지고 있다. 하지만 현재 필요로 하는 속성이 다른 테이블에 있는 경우가 더러 있다. 이럴 때 두 테이블의 공통 속성을 기준으로 테이블의 데이터를 합친 결과 데이터를 조회할 수 있다. 0. JOIN 의 종류 나의 경우 JOIN 에 대해 이해할 떄 위와 같은 그림을 통해 이해하였다. 그저 외우기보다 그림을 보면 각 상황에 결과 테이블이 어떻게 생성될지 생각을 반복했다. 종류가 굉장히 많아 보이지만 일단 'LEFT JOIN' 과 'RIGHT JOIN' 중에 하나만 이해하면 반대되는 개념도 쉽게 이해 가능했다(나의 경우에는 LEFT JOIN 을 기준으로 학습했다). 그림을 통해 자주 사용하는 2가지 JOIN 을 정리했다.(INNER) JOIN : 'JOIN' 또는 INNER..
2024.08.19 -
[사전캠프] 날짜별 획득 포인트 조회하기
※ 참고 : 기존 문제가 문맥이 좀 맞지 않는다... 그래서 과제 제목에 맞추어 개인적으로 약간 손 보았다.문제 : 이용자들이 사용하는 포인트를 따라가면 얼마나 활동적인지 파악할 수 있다. 포인트가 많을 수록 활동이 많다는 의미가 되니 날짜별로 이용자의 평균 포인트를 확인해보자.조건 : 날짜별 이용자의 평균 포인트가 높은 순으로 정렬해 언제 가장 활동적이었는지 확인SELECT DATE(created_at) created_at, ROUND(AVG(point), 0) average_pointsFROM point_usersGROUP BY 1ORDER BY 2 DESC 기존 'create_id' 는 'datetime' 타입이었다. 해당 컬럼에서 'DATE' 를 사용해 날짜 정보를 가져왔고, 'ROUND' 를 통..
2024.08.18