sql쿼리 각 절의 우선 순위
from >>> where >>> select >>> order by >>> group by >>> having >>> limit(이절은 order by 이후 실행)
1. 최솟값 구하기
ANIMAL_INS 테이블 : 동물 보호소에 들어온 동물의 정보

문제 : 동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성
나의 쿼리
SELECT DATETIME # 컬럼 선택
from ANIMAL_INS # 데이터 불러오기
order by DATETIME # datetime 컬럼 오름차순
limit 1 # 맨 앞의 데이터만 출력
2. 동물 수 구하기
ANIMAL_INS 테이블 : 동물 보호소에 들어온 동물의 정보

문제 : 동물 보호소에 동물이 몇 마리 들어왔는지 조회하는 SQL 문을 작성
나의 쿼리
SELECT count(*) as count # 행 수 카운트
from ANIMAL_INS # 데이터 불러오기
3. 동명 동물 수 찾기
ANIMAL_INS 테이블 : 동물 보호소에 들어온 동물의 정보

문제 : 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회
나의 쿼리
SELECT NAME, count(*) as COUNT # 컬럼선택, count(*) 행 수 카운트
from ANIMAL_INS # 데이터 불러오기
where NAME is not null # 이름이 null이 아닌 경우만 필터
group by NAME having count(*)>=2 # name로 묶어주고 행수가 2이상인 경우
order by NAME # name 컬럼 오름차순
4. 중복 제거하기
ANIMAL_INS 테이블 : 동물 보호소에 들어온 동물의 정보

문제 : 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.
나의 쿼리
SELECT count(distinct name) as count # 이름 중복을 제거하고 행 카운트
from ANIMAL_INS # 데이터 불러오기
where name is not null # 이름이 null이 아닌 경우만 필터
5. 이름에 el이 들어가는 동물 찾기
ANIMAL_INS 테이블 : 동물 보호소에 들어온 동물의 정보

문제 : 보호소에 돌아가신 할머니가 기르던 개를 찾는 사람이 찾아왔습니다. 이 사람이 말하길 할머니가 기르던 개는 이름에 'el'이 들어간다고 합니다. 동물 보호소에 들어온 동물 이름 중, 이름에 "EL"이 들어가는 개의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 이름 순으로 조회해주세요. 단, 이름의 대소문자는 구분하지 않습니다.
나의 쿼리
SELECT ANIMAL_ID, NAME # 컬럼 선택
from ANIMAL_INS # 데이터 불러오기
where ANIMAL_TYPE='Dog' and lower(NAME) like '%el%' # 강아지 중에서 이름에 el이 들어가는 강아지 필터, 대소문자 구문 안함
order by NAME # name 컬럼 오름차순
6. NULL 처리하기
ANIMAL_INS 테이블 : 동물 보호소에 들어온 동물의 정보

문제 : 입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시
나의 쿼리
SELECT ANIMAL_TYPE, # 컬럼 선택
case # name 컬럼 null 인경우 No name, 아니면 그대로
when name is null then 'No name'
else name
end as NAME
, SEX_UPON_INTAKE
from ANIMAL_INS # 데이터 불러오기
order by ANIMAL_ID # id 컬럼 오름차순
7. DATETIME에서 DATE로 형 변환
ANIMAL_INS 테이블 : 동물 보호소에 들어온 동물의 정보

문제 : 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜1를 조회하는 SQL문을 작성해주세요. 이때 결과는 아이디 순으로 조회
나의 쿼리
SELECT ANIMAL_ID, NAME, date_format(DATETIME, '%Y-%m-%d') as 날짜 # 컬럼 선택
from ANIMAL_INS # 데이터 불러오기
order by ANIMAL_ID # id 컬럼 오름차순
8. 가격이 제일 비싼 식품 정보 출력
FOOD_PRODUCT 테이블 : 식품 정보를 담은

문제 : 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성
나의 쿼리
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE # 컬럼 선택
from FOOD_PRODUCT # 데이터 불러오기
where PRICE=(select max(price) from FOOD_PRODUCT) # 가격이 제일 비싼것 필터
9. 중성화 여부 파악하기
ANIMAL_INS 테이블 : 동물 보호소에 들어온 동물의 정보

문제 : 보호소의 동물이 중성화되었는지 아닌지 파악하려 합니다. 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있습니다. 동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 중성화가 되어있다면 'O', 아니라면 'X'라고 표시
나의 쿼리
SELECT ANIMAL_ID, NAME, # 컬럼 선택
case # SEX_UPON_INTAKE컬럼에 Neutered 또는 Spayed 포함된 경우 중성화 판단 'O'
when SEX_UPON_INTAKE like '%Neutered%' or SEX_UPON_INTAKE like '%Spayed%' then 'O'
else 'X' # 나머지 'X'
end as 중성화
from ANIMAL_INS # 데이터 불러오기
order by ANIMAL_ID # id 컬럼 오름차순
10. 카테고리 별 상품 개수 구하기
PRODUCT 테이블 : 의류 쇼핑몰에서 판매중인 상품들의 정보

문제 : 상품 카테고리 코드(PRODUCT_CODE 앞 2자리) 별 상품 개수를 출력하는 SQL문을 작성해주세요. 결과는 상품 카테고리 코드를 기준으로 오름차순 정렬
나의 쿼리
SELECT substring(PRODUCT_CODE,1,2) as CATEGORY, count(*) as PRODUCTS # 제품코드 앞에 두자리 잘라 카테고리 컬럼 선정, count(*)로 행 수 카운트
from PRODUCT # 데이터 불러오기
group by substring(PRODUCT_CODE,1,2) # 카테고리 컬럼으로 묶어주기
order by CATEGORY # 카테코리 컬럼 오름차순