일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 페이지히트
- api정리
- Docker
- 라운드로빈
- solvesql
- 디코
- 멀티프로세싱
- sqllite
- 토스IH
- 운영체제
- 인접리스트
- SQL
- 페이지폴트
- 이진트리
- 힙
- CPU스케줄링
- devocean
- 대외활동후기
- 페이지교체알고리즘
- computerscience
- cs
- 스레싱
- discord봇
- 스택
- 캐시매핑
- 디코봇만들기
- SWMaestro
- CICD
- 세그멘테이션
- 소마14기
- Today
- Total
하마코
[SQL] SolveSQL 난이도1 문제 풀이 1 - select, where, count, distinct, min/max, substring 본문
[SQL] SolveSQL 난이도1 문제 풀이 1 - select, where, count, distinct, min/max, substring
hamaco.dev 2025. 7. 29. 13:00안녕하세요! 하마코입니다. 😊
항상 프로그래머스로만 SQL을 연습했는데, 문제를 Lv.0부터 Lv.5까지 모두 풀어봐서
이번에는 SolveSQL로 문제 풀이를 진행해보려고 합니다!
외부 사이트에 Solvesql 문제를 올릴 수 없어서 링크만 남겨놓겠습니다!
문제1 - 모든 데이터 조회하기
링크 | 손풀기 문제 :D
SELECT * FROM POINTS;
문제2 - 일부 데이터 조회하기
링크 | where절 쓰는 손풀기 문제!
SELECT *
FROM POINTS
WHERE QUARTET = 'I';
문제3 - 데이터 정렬하기
링크 | order by 쓰는 손풀기 문제! asc는 써도 되고 안 써도 된다.
SELECT *
FROM POINTS
WHERE QUARTET = 'I'
ORDER BY Y;
문제4 - 데이터 그룹으로 묶기
링크 | Round로 소수점 셋째 자리에서 반올림 해주고, AVG와 VARIANCE로 평균과 표본분산을 구했다.
VARIANCE 함수가 VAR()만 써도 되는 줄 알았는데 전체 이름을 다 써야했다.
SELECT
QUARTET,
ROUND(AVG(X),2) AS 'x_mean',
ROUND(VARIANCE(X),2) AS 'x_var',
ROUND(AVG(Y),2) AS 'y_mean',
ROUND(VARIANCE(Y),2) AS 'y_var'
FROM POINTS
GROUP BY QUARTET;
문제5 - 특정 컬럼만 조회하기
링크 | 여러 컬럼 조회도 손풀기 :)
SELECT X, Y FROM POINTS;
문제6 - 몇 분이서 오셨어요?
링크 | 나머지 구하는 % 연산자 써서 사람이 홀수일 때만 추출했다.
SELECT *
FROM TIPS
WHERE SIZE%2=1;
문제7 - 최근 올림픽이 개최된 도시
링크 | SUBSTRING으로 세글자만 추출하고, 문제에는 없었지만 모든 글자를 대문자로 변환해야돼서 UPPER() 함수 사용했다.
SELECT
YEAR,
UPPER(SUBSTRING(CITY,1,3)) AS 'city'
FROM GAMES
WHERE YEAR >= 2000
ORDER BY YEAR DESC;
문제8 - 우리 플랫폼에 정착한 판매자1
링크 | ORDERS >= 100 을 처음에 WHERE 절에 썼는데, WHERE절이 SELECT절보다 먼저 실행돼서 ORDERS를 이해하지 못했다. HAVING 절에서 써야되는 점을 잊지 않아야겠다. 또한, ORDER_ID에 DISTINCT 적용 안 해서 레코드 수가 다르다고 나왔는데 이 점도 유념해야겠다.
SELECT
SELLER_ID,
COUNT(DISTINCT(ORDER_ID)) AS 'orders'
FROM OLIST_ORDER_ITEMS_DATASET
GROUP BY SELLER_ID
HAVING ORDERS >= 100;
문제9 - 최고의 근무일을 찾아라
링크 | 팁이 최고로 높은 날을 뽑아야했기에 DESC 정렬을 하고 LIMIT를 걸어주었다.
SELECT
DAY,
ROUND(SUM(TIP),3) AS 'tip_daily'
FROM TIPS
GROUP BY DAY
ORDER BY tip_daily DESC LIMIT 1;
문제10 - 첫 주문과 마지막 주문
링크 | 주문을 처음 한 날, 마지막으로 한 날을 뽑기 위해 DATE에 MIN, MAX를 적용해서 풀이했다.
SELECT
MIN(DATE(ORDER_PURCHASE_TIMESTAMP)) AS 'first_order_date',
MAX(DATE(ORDER_PURCHASE_TIMESTAMP)) AS 'last_order_date'
FROM OLIST_ORDERS_DATASET;
'DEV > Data Analysis' 카테고리의 다른 글
[SQL] SolveSQL 난이도2 문제 풀이 2 - REGEXP, DATE, STRFTIME, 열 추출 (4) | 2025.08.21 |
---|---|
[SQL] SolveSQL 난이도2 문제 풀이 1 - group by, having, where, in, between (6) | 2025.08.12 |
[SQL] SolveSQL 난이도1 문제 풀이 2 - distinct, like, avg, round, 서브쿼리 (5) | 2025.08.09 |
[논문리뷰] RQ-RAG로 Multi-turn 대화 검색, 응답 생성 개선 (2) | 2025.05.07 |