
lv1. SELECT : 강원도에 위치한 생산공장 목록 출력하기
FOOD_FACTORY 테이블에서 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요. 이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요.
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY
WHERE ADDRESS LIKE "강원도%"
ORDER BY FACTORY_ID
lv1. IS NULL : 경기도에 위치한 식품창고 목록 출력하기
FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하는 SQL문을 작성해주세요. 이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고 결과는 창고 ID를 기준으로 오름차순 정렬해주세요.
SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS,
IFNULL(FREEZER_YN, "N") AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '경기도%'
ORDER BY WAREHOUSE_ID
/*MYSQL에 ISNULL()은 없다.
IS NULL과 IFNULL()이 있을 뿐...
이것 때문에 10분 넘게 고민했다 흑흑.*/
lv1. IS NULL : 나이 정보가 없는 회원 수 구하기
USER_INFO 테이블에서 나이 정보가 없는 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 USERS로 지정해주세요.
SELECT COUNT(*) AS USERS FROM USER_INFO
WHERE AGE IS NULL
lv1. SELECT : 조건에 맞는 회원수 구하기
USER_INFO 테이블에서 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력하는 SQL문을 작성해주세요.
SELECT COUNT(*) FROM USER_INFO
WHERE (AGE>=20 AND AGE<=29) AND JOINED LIKE "2021%"
lv1. SUM, MAX, MIN : 가장 비싼 상품 구하기
PRODUCT 테이블에서 판매 중인 상품 중 가장 높은 판매가를 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 MAX_PRICE로 지정해주세요.
SELECT MAX (PRICE) AS MAX_PRICE
FROM PRODUCT
lv2. SUM, MAX, MIN : 최솟값 구하기
동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.
SELECT DATETIME from ANIMAL_INS
where DATETIME=(select min(DATETIME) from ANIMAL_INS)
lv2. GROUP BY : 고양이와 개는 몇 마리 있을까
동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.
#첫번째 코드 -> GROUP BY 조건 사용 생각 못했을 때
SELECT ANIMAL_TYPE, COUNT(*) as COUNT
FROM ANIMAL_INS
WHERE ANIMAL_TYPE LIKE "Cat"
UNION
SELECT ANIMAL_TYPE, COUNT(*) as COUNT
FROM ANIMAL_INS
WHERE ANIMAL_TYPE LIKE "Dog"
#두번째 코드 -> GROUP BY를 사용하니 훨씬 깔끔해진 코드
SELECT ANIMAL_TYPE, COUNT(*) AS COUNT
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE ASC
lv2. GROUP BY : 동명 동물 수 찾기
동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.
SELECT NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(*)>=2 AND NAME IS NOT NULL
ORDER BY NAME
/*중요. sql 구문 사용 순서
1.FROM 2.WHERE : 테이블 조건에 맞는 데이터 추출 3.GROUP BY 4.HAVING: GROUP BY에 대한 조건 5.SELECT 6.ORDER BY
-> SELECT와 ORDER BY안에 다른 조건들이 들어가야 함.
*/
lv2. String, Date : 루시와 엘라 찾기
동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하는 SQL 문을 작성해주세요.
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ('Lucy','Ella','Pickle','Rogan', 'Sabrina', 'Mitty')
ORDER BY ANIMAL_ID
#동일한 칼럼에서 여러 내용을 찾을 때는 IN 함수를 사용하면 됨!
lv2. String, Date : 이름에 el이 들어가는 동물 찾기
보호소에 돌아가신 할머니가 기르던 개를 찾는 사람이 찾아왔습니다. 이 사람이 말하길 할머니가 기르던 개는 이름에 'el'이 들어간다고 합니다. 동물 보호소에 들어온 동물 이름 중, 이름에 "EL"이 들어가는 개의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 이름 순으로 조회해주세요. 단, 이름의 대소문자는 구분하지 않습니다.
#대소문자를 구분하지 않으므로 %EL%은 1가지로만 검색하면 됨.
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NAME LIKE '%EL%'
AND ANIMAL_TYPE LIKE "DOG"
ORDER BY NAME