mysql 문제풀이/easy 21

프로그래머스 Lv 4 - 보호소에서 중성화한 동물 (Lv 4 문제 마지막)

https://school.programmers.co.kr/learn/courses/30/lessons/59045 습득한 점: WHERE ~ IN () 처럼, LIKE IN () 도 가능할까 싶었는데, 불가능했다. 대신 아래처럼 AND를 전체로 묶은 뒤, 안쪽을 OR로 엮어줄 수는 있었다. ... WHERE SEX_UPON_INTAKE LIKE 'Intact%' AND (SEX_UPON_OUTCOME LIKE 'Spayed%' OR SEX_UPON_OUTCOME LIKE 'Neutered%') ... 문제: 보호소에 들어올 당시에는 중성화1되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 쿼리 작성. 즉, 들어올 땐, 중성화X, 나갈땐 중성..

프로그래머스 Lv 4 - 식품분류별 가장 비싼 식품의 정보 조회하기

https://school.programmers.co.kr/learn/courses/30/lessons/131116 습득한점: *** LIMIT은 서브쿼리에 들어가면 쿼리 실행자체가 안된다는 점 *** GROUP BY된 상태로 SELECT 함수 인자로 MAX func 활용할 때, 각 그룹의 첫번째 값이 끌려올 뿐, MAX func가 적용되지 않는 점 문제: FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 쿼리작성. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력. 결과는 식품 가격을 기준으로 내림차순 정렬. 문제파악: 각 카테고리(식품분류)에서 최대값을 나타내는 식품명(PRODUCT_NAME)을 찾아야 하는데, '면' 그룹내 P..

프로그래머스 Lv 3 - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

습득한점: 조회수의 최대값을 찾아야 할 때, 나는 당연히 최대값을 찾고, BOARD_ID를 MAX(VIEW) 를 SELECT 문에 함께 붙이면, RDBMS이기에 자동으로 조회수가 최대값인 로우의 BOARD_ID를 뽑아낼 수 있을 줄 알았지만 아니었다. 그렇게 친절하지는 않은 듯 하다. MAXVIEW는 MAXVIEW대로나오고,1줄짜리 row이니, 나머지 데이터들은 전체데이터의 첫번째열을 반환하는 것 같았다. mysql의 새로운 특성을 파악했다. 문제: USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 쿼리 작성. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬 기본적인 파일경로는 /home/grep/src/ 이..

프로그래머스 Lv 4 - 5월 식품들의 총매출 조회하기

습득한 점: 이제 Lv 4 문제도 3문제정도 밖에 남지 않아서, 벌써부터 난이도가 쉬워지고 있다. 그동안 5 난이도 부터 역순으로 문제풀어서, 3 난이도 문제 차례인데, 정답률 80%이하 인 것들만 풀어야 할듯 하다. 더불어, 윈도우 함수(LEAD, LAG, RANK, DENSE_RANK, ROW_NUMBER 등등) 혹은 사용자 정의 함수를 활용하는 문제가 프로그래머스에는 없는 듯해서, 3 난이도를 다 풀고나면 리트코드나 해커랭크 문제를 풀어야 할 것 같다. 아니면 Data Camp 라는 곳도 알아봐야겠다. (유료라 들었는데) 문제: FOOD_PRODUCT와 FOOD_ORDER 테이블에서 생산일자가 2022년 5월인 식품들의 식품 ID, 식품 이름, 총매출을 조회하는 쿼리 작성 결과는 총매출을 기준으로 ..

프로그래머스 Lv 4 - 서울에 위치한 식당 목록 출력하기

습득한 점: 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 쿼리를 작성하는 것이니 조회되는 쿼리는 모두 서울에 위치한 식당이어야 하고, 예상되는 테이블 형태는 아래와 같으므로 (적기만 하면 되는 컬럼은 제외했음) 문제에서는 식당 이름에 대해서 그룹화 하란 말이 없었지만, 결국은 식당 별 리뷰 평균을 구하는 것과 같다. 고로, 문제에서 ~~~ 그룹 별 이라는 말이 없어도, 문제에서 원하는 테이블 형태를 예상해서 원하는 컬럼에 GROUP BY 를 붙여 계산해도 된다. 식당 이름 리뷰 점수 >>> 식당이름 리뷰평균 a 4.5 >>> a 4.50 b 3 >>> b 3.33 b 4 >>> c 3.50 b 3 >>> c 3 >>> c 4 >>> 문제: R..

프로그래머스 Lv 4 - 년, 월, 성별 별 상품 구매 회원 수 구하기

습득한 점: 이전에는 테이블을 보이는데로 조인했다면, 지금은 테이블이 조인되었을 때의 형태를 머릿속으로 고려하면서 쿼리를 구성할 수 있게되었다. 문제: USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 쿼리문 작성 결과는 년, 월, 성별을 기준으로 오름차순 정렬. 이때, 성별 정보가 없는 경우 결과에서 제외. 문제파악: 크게 어려워 보이는 부분은 없었다. 다만 "동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나에 판매 데이터만 존재한다" 이 언급만 조금 더 고려하면 되었다. ONLINE_SALE만을 볼때, 날짜, 회원ID, 상품ID 조합에 대해서는 고유의 판매데이터만 존재한다고 했지만, ONLINE_SALE 테이블과 USER_INFO..

프로그래머스 Lv 4 - 주문량이 많은 아이스크림들 조회하기

링크: https://gooreumwave.tistory.com/43 습득한 점: 단순히 코드를 붙여넣기 하기보단 문제를 풀기 위해 생각했었던 중간과정을 기록해보는 것이 나중에 다시 복습할 때, 좋을 것 같음. 또한 다음부턴 쿼리 작성 시간도 카운트 해보면 좋을 것 같다. (쿼리 작성 속도가 점점 더 빨라지는 것 같아서 다행이다) 문제: 문제파악: JULY 테이블의 strawberry 값이 2개 값으로 표출되어 FLAVOR 컬럼 기준으로 누적합 함수를 쓰면 풀 수 있지 않을까 했지만, 순간의 착각이었다. FLAVOR 컬럼을 기준으로 누적합이 생성되는 것을 확인했다... 즉, JULY 테이블에서 한가지 맛을 거듭할때마다 아래 예시 처럼 CUM_SUM 컬럼에 누적합이 더해졌었다. ex) SHIPMENT_ID..

프로그래머스 Lv 4 - 우유와 요거트가 담긴 장바구니 - Summer/Winter Coding(2019)

습득한점: 코딩테스트 출제 문제 인 것 같은데, 어렵지는 않았으나 접근할 수 있는 방법이 생각보다 많아보였다. 조인으로도, WITH로도 풀 수 있을 것 같다. 문제: 데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지에 대한 이력 파악 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 쿼리 작성 정렬은 아이디로 문제파악: NAME 컬럼에 'Milk', 'Yogurt'가 모두 들어가는 값만 걸러낸다. 여기서 걸러낸 결과 NAME 카운트 값이 Milk =1 , Yogurt=1 이라고 당연하게 생각했던게 실수 였다. 2개인것도 3개 이상인 것도 고려를 해야했다. 아무튼 WHERE NAME IN ~으로는 2개 이상인 값들만 찾을 수 있으니, 이를 처리할 방법을..

프로그래머스 Lv 4 - 저자 별 카테고리 별 매출액 집계하기

습득한 점: 문제를 너무 느긋하게 풀고 있다. 다음 문제부터는 집중해서 최대한 빠르게 풀어보자 문제: 2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 구하기 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 쿼리 작성 결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬 문제파악: 문제 파악 할 것은 크게 없었다. 2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 구하기 - 위 조건만 유의하면 쉽게 풀 수 있다. 풀이: SELECT B.AUTHOR_ID , ..

프로그래머스 Lv 3 - 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 헤비 유저가 소유한 장소

링크: https://school.programmers.co.kr/learn/courses/30/lessons/77487 습득한 점: 실제 코테라고 쫄지마, Lv 1 수준이야 문제: 이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부름. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 쿼리 작성 문제파악: HOST_ID의 갯수가 2개 이상인 HOST_ID만 따로 뽑고, 원본데이터의 WHERE 조건절로 활용 풀이 -- 원하는 조건의 HOST_ID만 뽑은 뒤, 이를 원본데이터에 조건으로 넣기 # SELECT * # FROM PLACES # WHERE HOST_ID IN ( # SELECT HOST_ID # FROM PLACES # GROUP BY HOST_ID # HAVING COU..