전체 글 76

프로그래머스 Lv 4 - 입양 시각 구하기(2)

쉬울 줄 알았는데, 어려운 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59413 습득한 점: 쉬운 줄 알았는데, 생각보다 어려운 문제였다. SET함수를 활용해 본적이 없었어서 그랬을 수도 있다. 풀이법을 외워버리면 될 것 같다. 이 문제를 통해 SET함수를 실제로 활용해 볼 수 있었음. 이 또한 With 구문으로 풀어볼려고 했지만, With 구문에 테이블 이름을 끌어옴을 명시하는데 있어서, 표기하기가 난해했다. (내가 아직 부족한 걸 수도!!) 문제: 문제: 0시부터 23시까지, 각 시간대 별로 입양이 총 몇 건 일어났는지 파악하는 쿼리 작성. 결과는 시간대순으로 정렬. 문제파악: 열심히 case구문으로 풀었는데, 답이 나오지 않아..

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

프로그래머스 Lv 4 - 오프라인/온라인 판매 데이터 통합하기

링크: https://school.programmers.co.kr/learn/courses/30/lessons/131537 습득한 점: * 컬럼의 값을 NULL 로 표시해야 할 경우에는, 문자열 "NULL" 나타내는 것이 아닌 NULL 로만 기재 * UNION , UNION ALL? - UNION은 두 개의 테이블을 하나로 만드는 연산. 두 개 테이블의 컬럼 수, 컬럼 데이터 형식이 모두 일치해야 함. UNION 연산은 두 개의 테이블을 하나로 합치면서 중복된 데이터를 제거한다. 정렬을 발생 - UNION ALL은 중복을 제거하거나 정렬을 유발하지 않는다. 중복제거 없이 전부 보여줌 두 개 테이블의 컬럼 수가 같아야 하는 것은 동일 - Reference https://prinha.tistory.com/e..

고유값 만들기

언젠가 활용될 지 모를 sql 고유값 만들기 아마 LEFT, INNER 등 조인을 통해 테이블 변환이 필요할 때 활용할 수 있을 것 같다. CONCAT의 괄호 끝에 ' 넣어주고, 컬럼들 사이에 ,',', 넣어주면 끝이다. 전체 row갯수와 중복값을 제거한 row갯수가 같을 때만 활용해야한다. ex) SELECT ONLINE_SALE_ID ,USER_ID ,PRODUCT_ID ,SALES_AMOUNT ,concat(online_sale_id,',',user_id,',',PRODUCT_ID,',',SALES_AMOUNT) AS new FROM ONLINE_SALE 전체 row 갯수 122 새로운 컬럼 new가 생성되고, 문자열 조합으로 이루어진 값을 확인할 수 있다.

프로그래머스 Lv 4 - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기

- https://school.programmers.co.kr/learn/courses/30/lessons/157339 With counter AS( SELECT CAR.DAILY_FEE , CAR.CAR_ID , CAR.CAR_TYPE , START_DATE , END_DATE FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY AS HISTORY INNER JOIN CAR_RENTAL_COMPANY_CAR AS CAR ON CAR.CAR_ID = HISTORY.CAR_ID AND CAR.CAR_TYPE IN ('세단', 'SUV') WHERE (START_DATE > '2022-11-30' or END_DATE < '2022-11-01') ) SELECT DISTINCT CAR_ID..

프로그래머스 Lv 4 - 자동차 대여 기록 별 대여 금액 구하기

링크: https://school.programmers.co.kr/learn/courses/30/lessons/151141 습득한 점: 테이블 끼리의 조인을 할 때도, 두 테이블에 단순히 같은 값이 있다고 자주쓰던 INNER JOIN으로 그냥 매칭 시킬 것이 아니라 묶어야 할 테이블의 데이터 형식에 맞추어 조인 할 수 있도록 CASE 문을 통해, 특정 구간의 숫자 레인지를 값으로 바꾸는 데이터 조작 방식과, 이를 NULL 값이 드러 날 수 있도록 LEFT JOIN 으로 묶는 쿼리 작성 방식을 알게되었음. 주어진 테이블의 전체 형태를 보고 데이터 조작과, 테이블 조인을 시도해야 겠다는 생각이 들었음. 테이블을 연계구조를 한눈에 파악하기가 아직은 힘들었는데, 한눈에 파악 안되면 직접 그림을 그려보는 것도 하..

프로그래머스 Lv 5 - 상품을 구매한 회원 비율 구하기

링크: https://school.programmers.co.kr/learn/courses/30/lessons/131534 습득한 점: 1. 문제를 읽고, 내가 이해한 플로우가 맞는지 예시로 나온 부분도 제대로 파악하기!!! 이 문제의 경우 PUCHASED_USERS 를 구하는 과정에서 중복값을 고려하지 않아서 한참을 헤멧다. 읽기만 하고 문제가 원하는 바를 제대로 이해하지 않음. PUCHASED_USERS 컬럼의 경우 중복을 제거한 숫자를 카운팅하는 점을 주의해야함. (예시까지 이해하지 않으면, 계속 틀리게 될 것 같다) 2. JOIN의 경우 INNER JOIN으로 자동 인식된다는 점 3. 테이블 조인할 때, AND조건으로 조인될 조건을 추가할 수 있음. INNER JOIN USER_INFO U ON ..

프로그래머스 Lv1 - 조건에 부합하는 중고거래 댓글 조회

https://school.programmers.co.kr/learn/courses/30/lessons/164673 1. 조인조건을 찾아보니 다들 Board_id로 조인했고, 나만 Writer_id 기준으로 묶었더라. 2. 쿼리 짜는 것은 쉬웠지만, 데이터 포맷을 바꾸는 것 같은 세부적인 작업에 아직 익숙하지 않아서 연습이 필요하다. 3. CREATED_DATE(댓글작성일) 기준으로 오름차순 정렬, 댓글작성일이 같으면 TITLE(게시글 제목) 기준으로 오름차순 정렬이란 말에 어떻게 풀어야 할 지 살짝 멈칫. 결과적으로 경우의 수는 같거나 다르냐 2가지 일 뿐인데, 댓글작성일이 같을 경우를 처리하는 쿼리를 어떻게 만들지 생각하고 있었다;;; 4. 문제 제대로 읽자. 쉬운 문제야 SELECT TITLE , ..

기존 학습 자료

SQL Aggregate 함수 = SUM, COUNT, AVG... AVG, COUNT는 null은 세지 않음 COUNT -------------------------------------------------------------------------- SELECT COUNT(*) FROM Products >>> 프로덕트의 행들, 데이터 레코드의 개수 세기, null 값 포함 SELECT COUNT(Price) FROM Products AS COUNT(Price) >>> 특정 컬럼의 행 갯수 SELECT COUNT(DISTINCT Price) FROM Products AS COUNT(Price) >>> 중복값은 제외하고 셀 때 + null 값 미포함 SUM, AVG(null 계산에서 제외처리됨 ) --..