DB/SQL
[DB/SQL] SubQuery - Select, Where, From절에서 사용하기
SubQuery 란 쿼리문 안에 들어가는 쿼리문을 SubQuery라고 부릅니다. 실행하게 되면 SubQuery 부터 실행하여 결과를 생성하고, 이 결과를 가지고 외부의 쿼리문을 수행합니다. Where절 SubQuery 1. kakaopay로 결제한 유저 출력하기 orders 테이블에는 결제 정보가 있고, users 테이블에는 유저 정보가 있습니다. kakaopay로 결제한 유저들의 정보를 확인하고자 할 때 다음과 같이 작성할 수 있습니다. select u.user_id, u.name, u.email from users u inner join orders o on u.user_id = o.user_id where o.payment_method = 'kakaopay' 아니면, orders 테이블에서 kaka..
[DB/SQL] UNION, UNION ALL 쿼리 결과 합치기
A테이블과 B테이블이 있을 때 이 둘의 결과를 합쳐야 하는 경우가 있습니다. A와 B 테이블을 합치기 위해서는 당연히 두 테이블의 필드가 같아야 합니다. 각 테이블의 필드가 다르다면 select를 통해 동일한 필드로 지정해주면 됩니다. Union 또는 Union all을 사용하여 두 테이블을 합칠 수 있습니다. 위 와 같은 테이블이 있을 때, table1 와 table2 의 결과를 합쳐보겠습니다. UNION table2를 보면 id값이 a인 필드가 중복되어 존재합니다. UNION을 사용하여 결과를 합치면 중복된 값은 포함되지 않습니다. select * from table1 union select * from table2 UNION ALL UNION ALL을 사용하여 결과를 합치면 중복된 값이 그대로 포함..
[DB/SQL] 테이블 Join, Inner Join과 Left Join이란? 예시를 통해 알아보자
Join을 사용하면 두 테이블의 공통된 정보(key)를 기반으로 테이블을 연결할 수 있습니다. 오늘은 자주 사용되는 Innter Join과 Left join에 대해 알아보겠습니다. Left Join (Outer Join) Left Join에서는 어떤 테이블을 기준으로 join을 할 것인가가 중요합니다. 기준이 되는 테이블이 A라면, A에 B 테이블을 붙이게 되는데, A에 B에 관한 내용이 없으면 필드값이 NULL이 됩니다. store 테이블의 id 값과 동일한 id 값을 갖는 reivew 테이블을 join 하려면 다음과 같이 작성합니다. select * from store s left join review r on s.id = r.id 디저트집에 대한 review가 존재하지 않기 때문에 NULL로 표시됩..
[프로그래머스/SQL] 3월에 태어난 여성 회원 목록 출력하기
문제 설명 다음은 식당 리뷰 사이트의 회원 정보를 담은 MEMBER_PROFILE 테이블입니다. MEMBER_PROFILE 테이블은 다음과 같으며 MEMBER_ID, MEMBER_NAME, TLNO, GENDER, DATE_OF_BIRTH는 회원 ID, 회원 이름, 회원 연락처, 성별, 생년월일을 의미합니다. Column name Type Nullable MEMBER_ID VARCHAR(100) FALSE MEMBER_NAME VARCHAR(50) FALSE TLNO VARCHAR(50) TRUE GENDER VARCHAR(1) TRUE DATE_OF_BIRTH DATE TRUE 문제 MEMBER_PROFILE 테이블에서 생일이 3월인 여성 회원의 ID, 이름, 성별, 생년월일을 조회하는 SQL문을 작성..
[SQL] DATE_FORMAT 날짜/시간 포맷 지정하기
DATE_FORMAT 함수를 사용하여 날짜의 포맷을 지정해줄 수 있습니다. DATE_FORMAT은 다음과 같이 사용할 수 있습니다. DATE_FORMAT(날짜, 형식) 예시를 살펴보겠습니다. 1. 날짜 형식 변환 날짜가 '000414'인 경우 DATE_FORMAT을 사용하여 '2000-04-14' 으로 포맷을 변경할 수 있습니다. SELECT DATE_FORMAT('000414', '%Y-%m-%d') > 2000-04-14 여기서 Y은 네 자리의 연도, m은 00~12의 월, d는 00~31의 일 을 나타냅니다. DATE_FORMAT 에서는 이 외에도 포맷으로 지정할 수 있는 값이 다양합니다. 날짜 기호 기호 형식 기호 형식 %Y (연) 4자리 연도 %b (월) 짧은 영문 이름 (ex. Jan) %y ..
[DB/SQL] Order by 오름차순/내림차순 정렬하기
오름차순 정렬1. 성씨별 사람이 많은 순으로 데이터 정렬하기group by를 사용해서 같은 name끼리 묶고, 각 범주의 개수를 세도록 하면 다음과 같은 결과를 얻을 수 있습니다.select name, count(*) from usersgroup by name이 데이터를 정렬하기 위해서는 order by와 어떤 필드를 사용해서 정렬할지를 작성해주면 됩니다.범주의 개수 count(*)을 사용해서 오름차순 정렬하도록 하겠습니다.select name, count(*) from usersgroup by nameorder by count(*) 내림차순 정렬내림차순은 desc만 붙여주면 됩니다.select name, count(*) from usersgroup by nameorder by count(*) desc좋..
[DB/SQL] Group by를 통한 범주의 개수, 최소/최대값, 평균값, 합계 구하기
범주의 개수구하기 Count 같은 성씨끼리 group을 만들고, 해당 성씨에 몇 명이 있는지 count 해봅시다. select name, count(*) from users u group by name 위와 같이 작성하면 '이**'인 사람끼리 group을 만들고, '신**'인 사람들끼리 group을 만들고... 같은 성씨끼리 group으로 묶이게 됩니다. count로 해당 범주에서의 데이터 개수를 세어줍니다. 여기서는 count를 통해 '이**'인 사람이 몇 명인지, '신**'인 사람이 몇 명인지 알 수 있습니다. 범주의 최솟값/최댓값 구하기 Min/Max 동일한 week 별로 likes 수의 최소값/최대값 구하기 select week, min(likes) from checkins group by wee..