분류 전체보기 76

프로그래머스 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://school.programmers.co.kr/learn/courses/30/lessons/132204 습득한 점: 예시로 주어진 테이블을 반드시 보면서, 문제에서 주어진 말들을 오해하지 않고 빠르게 풀어야 겠다. 쉬워보인다고 해서 보지 않으면, 이렇게 쉬운 문제임에도 오히려 시간을 소모 할수 있다. 다음은 환자 정보를 담은 PATIENT 테이블과 의사 정보를 담은 DOCTOR 테이블, 그리고 진료 예약목록을 담은 APPOINTMENT에 대한 테이블입니다. PATIENT 테이블은 다음과 같으며 PT_NO, PT_NAME, GEND_CD, AGE, TLNO는 각각 환자번호, 환자이름, 성별코드, 나이, 전화번호를 의미합니다. PT_NO VARCHAR(N) FALSE PT_NAME VAR..

프로그래머스 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 , ..

데이터 시각화 1

1. 막대 차트는, 수치 데이터 값들 간의 작은 양적 차이를 비교하는데 유용 - 막대 차트를 사용할 때는비슷한 값들의 비교를 명확하게 하기 위해서 데이터를 정렬 2. 집계 형태에 따라 데이터가 어떻게 표현될 지 미리 예상해보기 - ex) 합계, 평균 3. 생각보다 히트맵처럼 생긴 트리맵은 전체데이터를 한번에 보는 용도로는 좋은 수단이지만, 데이터의 양이 많아지면 많아질수록 시각화가 어려워 질 듯하다. 4. 시트의 우측 클릭을 통해 아래, scatter plot 처럼 추세선을 추가할 수있고, 분석 탭에서 집계형태 별로 가로 축, 세로 축 참조선 추가 가능 5. 도구설명 편집의 삽입을 통해, 현재시트에 다른 시트를 호버링하여 표현 할 수 있음

프로그래머스 Lv 4 - 그룹별 조건에 맞는 식당 목록 출력하기

인터넷 상에 죄다 LIMIT 1 풀이 투성이라, 조금 헤멧다. 리팩토링은 나중에...해봐야겠다. 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131124 습득한 점: WITH 구문을 사용 함과 동시에, 다른 2가지 이상의 테이블을 동시에 활용 할때, FROM 절에 들어할 테이블이 2개 이상인 경우가 있어서 이를 어찌 처리해야 할지 난감했다. 결과적으로는 WITH 문 + SELECT 문 조합으로 계산을 끝낸 뒤, 이 전체를 새로운 테이블의 WHERE 값에 넣어버리는 식으로 쿼리를 작성했다. 이 과정에서, 아래 2가지의 차이를 알게되었다. WHERE 컬럼 = (~~~~) WHERE 컬럼 IN (~~~~) 서브쿼리에 해당하는 값이 1가지 이고,..