❓ Question ❗ Answer SELECT ins.animal_id, ins.animal_type, ins.name FROM animal_ins ins LEFT OUTER JOIN animal_outs outs ON ins.animal_id = outs.animal_id WHERE (ins.sex_upon_intake LIKE '%Intact%') AND (outs.sex_upon_outcome LIKE '%Spayed%' OR outs.sex_upon_outcome LIKE '%Neutered%') ORDER BY ins.animal_id; 📌 Discussion join으로 동일한 key를 가진 데이터를 추출 후 WHERE 문에서 LIKE 조건으로 원하는 데이터를 필터링
❓ Question ❗ Answer SELECT ins.animal_id, ins.name FROM animal_ins ins LEFT OUTER JOIN animal_outs outs ON ins.animal_id = outs.animal_id ORDER BY outs.datetime - ins.datetime DESC LIMIT 2; 📌 Discussion - ORDER BY에서도 집계량 활용이 가능하다.
📌문제 출처 백준 단계별 문제풀이 - 그리디 알고리즘 https://www.acmicpc.net/problem/11399 ❓ 문제 ❗ 풀이 정렬 후 누적합 📗 풀이 코드 import sys input = sys.stdin.readline n = int(input()) # 빨리 인출하는 사람이 먼저 뽑고 나가야 뒤에서 덜 기다림 times = sorted(list(map(int,input().split()))) # 시간 순으로 정렬 waiting = [] # 재정렬한 순서대로 뽑았을 때 순서별 대기시간 tmp_time = 0 # 현재 사람의 대기시간 # 누적합 구하기 for time in times : tmp_time += time waiting.append(tmp_time) print(sum(waitin..
❓ Question ❗ Answer SELECT product.product_code 상품코드, SUM(product.price*sale.sales_amount) 매출액 FROM product product LEFT OUTER JOIN offline_sale sale ON product.product_id = sale.product_id WHERE sale.sales_amount IS NOT NULL GROUP BY product.product_code ORDER BY 매출액 DESC, 상품코드; 📌 Discussion GROUP BY 이후에 집계함수 활용 WHERE -> GROUP BY -> HAVING 순으로 작동
❓ Question ❗ Answer SELECT car_type, COUNT(*) 'CARS' FROM car_rental_company_car WHERE options LIKE '%시트%' GROUP BY car_type ORDER BY car_type; 📌 Discussion - 시트의 종류 세개 중에 하나만 포함되면 되므로 LIKE '%시트%'로 조건 지정
❓ Question ❗ Answer SELECT ins.animal_id, ins.name FROM animal_ins ins LEFT OUTER JOIN animal_outs outs ON ins.animal_id = outs.animal_id WHERE ins.datetime > outs.datetime ORDER BY ins.datetime; 📌 Discussion LEFT OUTER JOIN으로 JOIN 후에도 오른쪽 테이블의 값이 NULL인 레코드도 가져온다. WHERE로 JOIN 후 합쳐진 테이블에서 컬럼 데이터를 비교
❓ Question ❗ Answer SELECT ins.name, ins.datetime FROM animal_ins ins LEFT OUTER JOIN animal_outs outs ON ins.animal_id = outs.animal_id WHERE outs.datetime IS NULL ORDER BY ins.datetime LIMIT 3; 📌 Discussion LEFT OUTER JOIN으로 두 테이블을 결합하여 오른쪽 테이블이 NULL값인 레코드도 모두 불러옴 이 경우에 누락된 레코드가 적기에 WHERE절에서 추가 옵션을 줘서 레코드를 더 잘 활용할 수 있다. WHERE절에서 outs.datetim이 없는 레코드를 누락시킴 LIMIT 3로 상위 세가지 레코드만 추출
❓ Question ❗ Answer SELECT mcdp_cd '진료과코드', COUNT(*) '5월예약건수' FROM appointment WHERE DATE_FORMAT(apnt_ymd,'%Y%m') = '202205' GROUP BY mcdp_cd ORDER BY 5월예약건수, 진료과코드; 📌 Discussion DATE_FORMAT(apnt_ymd,'%Y%m') = '202205'로 조건 설정 LEFT로 '2022-05'로 시작하는 데이터라는 조건 설정해도 가능 GROUP BY로 무리짓고 COUNT로 집계 ORDER BY는 이미 불러온 레코드에 있는 열에 대해 정렬하므로 문자열로 열을 부르면 정렬 불가