[ SELECT ]
[ 강원도에 위치한 생산공장 목록 출력하기 ]
FOOD_FACTORY 테이블에서 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요. 이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요.
- '%강원도%' : ~~~~강원도~~~~
- '강원도%' : 강원도~~~
- '%강원도' : ~~~~강원도
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '강원도%'
[ 정렬해서 모든 칼럼 조회하기 ]
동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.
- ORDER BY : 정렬
- ASC : 오름차순 (디폴트)
- DESC : 내림차순
SELECT *
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
# 오름차순
SELECT * FROM 테이블 ORDER BY 칼럼
# 내림차순
SELECT * FROM 테이블 ORDER BY 칼럼 DESC
[ 3월에 태어난 여성 회원 목록 출력하기 ]
MEMBER_PROFILE 테이블에서 생일이 3월인 여성 회원의 ID, 이름, 성별, 생년월일을 조회하는 SQL문을 작성해주세요. 이때 전화번호가 NULL인 경우는 출력대상에서 제외시켜 주시고, 결과는 회원ID를 기준으로 오름차순 정렬해주세요.
- DATE_FORMAT : 날짜 형식 변환
- IS NOT NULL : NULL이 아님
SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE (MONTH(DATE_OF_BIRTH)='03') AND (TLNO IS NOT NULL) AND (GENDER='w')
ORDER BY MEMBER_ID
[ 재구매가 일어난 상품과 회원 리스트 구하기 ]
ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬해주세요.
- DISTINCT : 중복 제거
SELECT DISTINCT A.USER_ID, A.PRODUCT_ID
FROM ONLINE_SALE A, ONLINE_SALE B
WHERE (A.USER_ID=B.USER_ID) AND (A.PRODUCT_ID=B.PRODUCT_ID) AND (A.ONLINE_SALE_ID!=B.ONLINE_SALE_ID)
ORDER BY A.USER_ID ASC, A.PRODUCT_ID DESC
[ 아픈 동물 찾기 ]
동물 보호소에 들어온 동물 중 아픈 동물1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION='Sick'
[ 조건에 맞는 회원 수 구하기 ]
USER_INFO 테이블에서 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력하는 SQL문을 작성해주세요.
SELECT COUNT(*) AS USERS
FROM USER_INFO
WHERE YEAR(JOINED)='2021' AND 20<=AGE AND AGE<=29
[ 상위 n개 레코드 ]
동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.
- LIMIIT : 몇개까지 보여줄지
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1
[ SUM, MAX, MIN ]
[ 중복 제거하기 ]
동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.
SELECT COUNT(DISTINCT A.NAME) AS count
FROM ANIMAL_INS A
WHERE A.NAME IS NOT NULL
[ 가격이 제일 비싼 식품의 정보 출력하기 ]
FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요.
SELECT A.*
FROM FOOD_PRODUCT A
WHERE A.PRICE IN (SELECT MAX(B.PRICE)
FROM FOOD_PRODUCT B)
[ GROUP BY ]
[ 고양이와 개는 몇 마리 있을까 ]
동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.
SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS count
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE
[ 식품분류별 가장 비싼 식품의 정보 조회하기 ]
FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.
SELECT CATEGORY, PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE PRICE IN (SELECT MAX(PRICE) FROM FOOD_PRODUCT GROUP BY CATEGORY)
AND CATEGORY IN ('과자', '국', '김치', '식용유')
ORDER BY PRICE DESC
[ 동명 동물 수 찾기 ]
동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.
- HAVING : GROUP BY로 묶은 내용에서 조건을 걸 때 사용
SELECT NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(NAME)>=2
ORDER BY NAME
[ 입양 시각 구하기 ]
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
SELECT HOUR, COUNT(HOUR) AS COUNT
FROM (SELECT HOUR(DATETIME) AS HOUR
FROM ANIMAL_OUTS
WHERE 9<=HOUR(DATETIME) AND HOUR(DATETIME)<=19) AS A
GROUP BY A.HOUR
ORDER BY HOUR
[ 즐겨찾기가 가장 많은 식당 정보 출력하기 ]
REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.
- (FOOD_TYPE, FAVORITES) : 괄호로 묶어줘야 FOOD_TYPE, FAVORITE 의 쌍이 IN에 해당하는지를 봐줌
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE (FOOD_TYPE, FAVORITES) IN (SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE)
ORDER BY FOOD_TYPE DESC
[ JOIN]
[ 상품 별 오프라인 매출 구하기 ]
PRODUCT 테이블과 OFFLINE_SALE 테이블에서 상품코드 별 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요.
SELECT PRODUCT_CODE, SUM(SALES_AMOUNT * PRICE) AS SALES
FROM OFFLINE_SALE O
JOIN PRODUCT P
ON O.PRODUCT_ID=P.PRODUCT_ID
GROUP BY O.PRODUCT_ID
ORDER BY SALES DESC, PRODUCT_CODE ASC
[ 없어진 기록 찾기 ]
천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.
- RIGHT OUTER JOIN : 오른쪽 테이블의 값을 모두 포함하도록 join
SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_INS I
RIGHT OUTER JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID=O.ANIMAL_ID
WHERE I.ANIMAL_ID IS NULL
ORDER BY ANIMAL_ID
[ 오랜 기간 보호한 동물 (1) ]
아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다.
SELECT I.NAME, I.DATETIME
FROM ANIMAL_INS I
LEFT OUTER JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE O.ANIMAL_ID IS NULL
ORDER BY I.DATETIME
LIMIT 3
[ 있었는데요 없었습니다 ]
관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I
RIGHT OUTER JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.DATETIME > O.DATETIME
ORDER BY I.DATETIME