[SQL] 연습 36

[solvesql] 지역별 주문의 특징

Q. region, category 별 주문량을 계산해 출력하는 쿼리를 작성해주세요. 결과 데이터는 아래와 같은 테이블 형태로 출력되어야 하고, Region 컬럼 기준 오름차순으로 정렬되어 있어야 합니다. - 문제 조건 확인 1. region, category 별 주문량을 계산 → group by 사용 2. 목표 테이블 형태 → pivot 테이블 형식으로 출력되도록 쿼리를 작성 3. Region 컬럼 기준 오름차순으로 정렬 → order by Region - 테이블 확인 - 풀이과정 1. 먼저 records table 을 확인한 후, region 만 추출 select region from records ; 2. CASE 문을 활용하여, category 가 Furniture 인 경우의 주문건수를 집계 - ..

[SQL] 연습 2022.10.20

[solvesql] 일별 블로그 방문자 수 집계

Q. 2021년 8월 2일부터 2021년 8월 9일까지 날짜별로 몇 명의 방문자가 방문했는지 알고 싶습니다. 해당 일자 내 로그 테이블에 이벤트가 하나라도 기록 된 경우 방문자로 집계합니다. 기간 별 방문자 수를 일별로 추출하는 쿼리를 작성해주세요. 결과 데이터에는 아래 2개 컬럼(dt - 방문일, users - 방문자수)이 들어가야하며, 방문일을 기준으로 오름차순 정렬되어있어야 합니다. - 문제 조건 확인 1. 2021년 8월 2일부터 2021년 8월 9일까지 날짜 → where date(~) >= date('2021-08-02') and date(~) = date('2021-08-02') and event_date_kst = date('2021-08-02') and event_date_kst

[SQL] 연습 2022.10.13

[solvesql] 복수 국적 메달 수상한 선수 찾기

Q. 2000년 이후의 메달 수상 기록만 고려했을 때, 메달을 수상한 올림픽 참가 선수 중 2개 이상의 국적으로 메달을 수상한 기록이 있는 선수의 이름을 조회하는 쿼리를 작성해주세요. 조회된 선수의 이름은 오름차순으로 정렬되어 있어야 합니다. - 문제 조건 확인 1. 2000년 이후의 올림픽 게임 기록만 사용 → where year >= 2000 2. 메달을 수상한 올림픽 참가 선수의 국적이 2개 이상 → where medal not null 사용 및 group by + count(distinct ~ ) 문 필요 예상 3. 조회된 선수의 이름은 오름차순 정렬 → order by name - 테이블 확인 - 풀이과정 1. records 테이블과 games 테이블을 조인, where 절 조건 추가 selec..

[SQL] 연습 2022.10.09

[SQL] 쇼핑몰의 일일 매출액과 ARPPU

문제 두 테이블을 이용해 2018년 1월 1일 이후 일별로 집계된 쇼핑몰의 결제 고객 수, 매출액, ARPPU를 계산하는 쿼리를 작성해주세요. select date(x1.order_purchase_timestamp) dt, count(distinct x1.customer_id) pu, round(sum(payment_value), 2) revenue_daily, round( sum(payment_value)/count(distinct x1.customer_id), 2) arppu from olist_orders_dataset x1 inner join olist_order_payments_dataset x2 on x1.order_id = x2.order_id where x1.order_purchase_ti..

[SQL] 연습 2022.07.24

[mysql] 프로그래머스 우유와 요거트가 담긴 장바구니

오늘은 프로그래머스 sql 문제 중에 '우유와 요거트가 담긴 장바구니' 문제를 풀어보도록 하겠습니다. 난이도는 Level 4 이며, JOIN을 알고 있으면 풀 수 있을 것 입니다. 언어는 mysql로 풀이하였습니다. 문제 데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다. 풀이과정 이 문제의 기본은 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회할 수 있어야 합니다. select distinct(a.cart_id) from (select * from cart_products where name = "..

[SQL] 연습 2022.07.22

[mysql] 프로그래머스 보호소에서 중성화한 동물

오늘은 프로그래머스 sql 문제 중에 '보호소에서 중성화한 동물' 문제에 대해서 풀어보도록 하겠습니다. 문제 난이도는 Level 4 문제이고 JOIN을 사용하면 풀 수 있다고 합니다. 문제 풀이에 사용한 언어는 mysql입니다. 이제 문제를 확인해 보겠습니다. 문제 보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요. (중성화를 거치지 않은 동물은 성별 및 중성화 여부에 Intact, 중성화를 거친 동물은 Spayed 또는 Neutered라고 표시되어있습니다.) 풀이과정 일단 두 가지 큰 조건이 있습니다. 1. 보호소에 들어올 ..

[SQL] 연습 2022.07.17

[mysql] solvesql 두 테이블 결합하기

오늘은 solvesql에 있는 '두 테이블 결합하기' 문제를 풀어보겠습니다. 난이도는 쉬움이며, 언어는 mysql로 하겠습니다. 문제 events 테이블(올림픽 경기 종목과 경기 이름)과 records 테이블(역대 올림픽 참가 선수들의 신체 정보와 획득한 메달 정보)을 활용해 올림픽 골프 종목에 참가한 선수의 ID를 모두 조회하는 쿼리를 작성해주세요. 풀이과정 일단 이 문제의 포인트만 살펴보자면, 올림픽 골프 종목에 참가한 선수의 ID를 모두 조회하라는 것입니다. 우리는 여기서 올림픽 종목에 대한 것은 events 테이블과 records 테이블에 있을 것이고, 참가한 선수의 ID는 records 테이블에 있을 것이라는 것부터 알아야합니다. 그렇다면 join 구문은 events 와 records 의 각 경..

[SQL] 연습 2022.07.16

[SQL] 사용자 정의 변수 @variable

사용자 정의 변수(User-Defined Variables)란? Mysql에서는 사용자 정의 변수(User-Defined Variables)를 만들어서 사용할 수 있습니다. 사용자 정의 변수의 역할은 값을 저장해서(storing a value), 이 저장한 값을 다른 statement에서 불러와서 다시 사용할 수 있도록 해주는 것 입니다. 일반적으로 사용자 정의 변수는 아래와 같은 형태로 선언합니다. 다만 변수를 만들때 몇 가지 참고해야할 사항이 있습니다. 1) 변수명은 대문자-소문자를 구분하지 않기 때문에, @mark나 @MARK나 동일한 변수입니다. 2) 변수명의 최대 길이는 64 characters 입니다. 3) 변수명은 영어, 숫자, .(점), _ , $ 표시를 포함할 수 있습니다. 4) 다만 변..

[SQL] 연습 2022.07.03

[SQL] CASE문

SQL에서 CASE문이란? SQL에서의 CASE문은 엑셀에서 IF() 함수를 떠올리면 이해하기 쉽습니다. 엑셀에서 IF() 함수는 아래와 같이 조건문에 대한 판단에 따라 참인 경우와 아닌 경우로 나뉘어서 작동하게 되는데요. *엑셀에 대한 참고: https://simon-yoon.tistory.com/29 SQL에서의 CASE문도 기본적으로 다음과 같이 작성할 수 있습니다. CASE로 CASE문을 시작하고 영어 문장 쓰듯이 자연스럽게 WHEN 쓰고 THEN 뒤에 출력할 내용을 작성하면 됩니다. SQL 쿼리 작성 예시 이제 MySQL에서 world 데이터베이스를 사용하여 쿼리를 작성해 보겠습니다. 아래는 world 데이터베이스의 country 테이블 일부입니다. 저는 여기서 빨간 박스로 표시한 populat..

[SQL] 연습 2022.07.02

[SQL] View의 특징과 생성 및 삭제

View(뷰)란? View(뷰)란, 테이블로부터 유도된 가상의 테이블을 의미합니다. 여기서 포인트는 '가상의 테이블'이라는 점입니다. '가상의 테이블'이므로 실제 데이터를 저장하고 있지는 않습니다. 그렇다면 View는 왜 사용하는 것일까요? View의 역할은 가상 테이블로 특정한 쿼리를 실행한 결과만 보고자 할 때 사용합니다. 다시 말하면 테이블을 참조해서 원하는 칼럼만을 조회하는데 View를 사용하면 쿼리를 더 단순하게 만들 수 있다는 장점이 있기 때문입니다. 이번에는 View의 특징을 살펴보겠습니다. 1. 참조한 테이블이 변경될 경우, View도 함께 변경된다. 2. 한번 생성된 View는 수정이 불가능하며, 따라서 한번 생성된 View는 변경을 원할 경우 삭제 후 재생성해야 한다. 3. 특정 컬럼만..

[SQL] 연습 2022.06.26