sql쿼리 각 절의 우선 순위
from >>> where >>> select >>> order by >>> group by >>> having >>> limit(이절은 order by 이후 실행)
1. 조건에 맞는 사용자와 총 거래금액 조회하기
USED_GOODS_BOARD 테이블 : 중고 거래 게시판 정보

USED_GOODS_USER : 중고 거래 게시판 첨부파일 정보

문제 : 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회하는 SQL문을 작성해주세요. 결과는 총거래금액을 기준으로 오름차순 정렬
나의 쿼리
SELECT B.USER_ID, B.NICKNAME, A.TOTAL_SALES FROM # 컬럼 선택
(SELECT WRITER_ID, sum(PRICE) as TOTAL_SALES # 팔린 가격이 70만원 이상인 정보
from USED_GOODS_BOARD
where STATUS='DONE'
group by WRITER_ID
having sum(PRICE)>=700000) A
LEFT JOIN # 왼쪽 기준 join
(SELECT USER_ID, NICKNAME # 유저 게시판 첨부파일 정보
FROM USED_GOODS_USER
) B
ON A.WRITER_ID=B.USER_ID # id 기준으로 join
ORDER BY TOTAL_SALES # total_sales 오름 차순 정렬
2. 대여 기록이 존재하는 자동차 리스트 구하기
CAR_RENTAL_COMPANY_CAR 테이블 : 대여 중인 자동차 정보를 담은

CAR_RENTAL_COMPANY_RENTAL_HISTORY : 자동차 대여 기록 정보를 담은

문제 : 자동차 종류가 '세단'인 자동차들 중 10월에 대여를 시작한 기록이 있는 자동차 ID 리스트를 출력하는 SQL문을 작성해주세요. 자동차 ID 리스트는 중복이 없어야 하며, 자동차 ID를 기준으로 내림차순 정렬
나의 쿼리
SELECT distinct(car_id) # 컬럼 선택 공통 제거
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY # 데이터 불러오기
WHERE car_id in (SELECT car_id FROM CAR_RENTAL_COMPANY_CAR WHERE CAR_TYPE='세단') # 세단이고
AND date_format(start_date,'%m') ='10' # 10월에 대여기록이 있는 차
ORDER BY car_id desc # 차id로 내림차순 정렬
3. 즐겨찾기가 가장 많은 식당 정보 출력하기
REST_INFO 테이블 : 식당 정보를 담은

문제 : 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬
나의 쿼리
SELECT A.FOOD_TYPE, B.REST_ID, B.REST_NAME, A.FAVORITES # 컬럼 선택
FROM
(SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES # 음식 종류별 가장 비싼 데이터 필터
FROM REST_INFO
GROUP BY FOOD_TYPE) A
LEFT JOIN # 왼쪽 테이블 기준 조인
(SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES # 음식종류, id, 식당명, 즐겨찾기수 데이터
FROM REST_INFO) B
ON (A.FOOD_TYPE=B.FOOD_TYPE and A.FAVORITES=B.FAVORITES) # 음식종류와, 즐겨찾기수가 같은것 조인
ORDER BY FOOD_TYPE desc # 음식 종류별 내림차순
4. 없어진 기록 찾기
ANIMAL_INS 테이블 : 동물 보호소 들어온 동물의 정보를 담은 테이블

ANIMAL_OUTS 테이블 : 동물 보호소에 입양 보낸 동물의 정보를 담은 테이블

문제 : 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성
나의 쿼리
SELECT ANIMAL_ID, NAME # 컬럼 선택
FROM ANIMAL_OUTS # 데이터 가져오기
WHERE ANIMAL_ID not in (SELECT ANIMAL_ID FROM ANIMAL_INS) # 보호소에 들어온 기록이 없는 데이터
ORDER BY ANIMAL_ID, NAME # 동물id, 이름 순 으로 정렬
5. 조건에 맞는 사용자 정보 조회하기
USED_GOODS_BOARD 테이블 : 중고 거래 게시판 정보

USED_GOODS_USER : 중고 거래 게시판 첨부파일 정보

문제 : 중고 거래 게시물을 3건 이상 등록한 사용자의 사용자 ID, 닉네임, 전체주소, 전화번호를 조회하는 SQL문을 작성해주세요. 이때, 전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력되도록 해주시고, 전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 하이픈 문자열(-)을 삽입하여 출력해주세요. 결과는 회원 ID를 기준으로 내림차순 정렬
나의 쿼리
SELECT B.USER_ID, B.NICKNAME ,
concat(B.CITY, ' ',B.STREET_ADDRESS1, ' ',B.STREET_ADDRESS2) as 전체주소, # 공백을 주며 concat
concat(substring(B.TLNO,1,3), '-' , substring(B.TLNO,4,4), '-', substring(B.TLNO,8,4)) as 전화번호 # substring를 사용하여 -를 주며 concat
FROM
(SELECT WRITER_ID # 중고 게시글 3건 이상 등록한 사용자 id
FROM USED_GOODS_BOARD
GROUP BY WRITER_ID
HAVING count(*)>=3) A
LEFT JOIN # 왼쪽 테이블 기준 조인
(SELECT * # 중고 거래 게시판 첨부파일 정보
FROM USED_GOODS_USER ) B
ON A.WRITER_ID=B.USER_ID # id 기준으로 조인
ORDER BY USER_ID desc # user_id 내림차순 정렬