Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- viewsets
- github
- web
- 자료구조
- 장고
- 아티클 스터디
- redis
- 도커
- flask
- django
- ERD
- CS
- JWT
- 쿠키(cookie)
- Til
- 파이썬
- 연습
- 오블완
- Doker
- Wil
- 티스토리챌린지
- NoSQL
- SQL
- 코딩테스트
- Python
- nginx
- docker
- 개발공부
- git
- 세션(Session)
Archives
- Today
- Total
SteadyDrills
[TIL] SQL 연습문제6 & SQL 코딩테스트 연습 문제 본문
20240614
id | name | region | rating | join_date |
1 | 르탄이 | 한국 | 1300 | 2019-06-15 |
2 | 배캠이 | 미국 | 1500 | 2020-09-01 |
3 | 구구이 | 한국 | 1400 | 2021-01-07 |
4 | 이션이 | 미국 | 1350 | 2019-11-15 |
- lol_users 테이블에서 각 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성해 주세요! 전체 지역(region) 기준이고 순위는 레이팅이 높을수록 높아야 해요. (e.g. rating 1400 유저의 순위 > rating 1350 유저의 순위)
SELECT name
FROM lol_users
ORDER BY rating DESC ;
- lol_users 테이블에서 가장 늦게 게임을 시작한(join_date) 유저의 이름을 선택하는 쿼리를 작성해주세요
SELECT name
FROM lol_users
ORDER BY join_date DESC
LIMIT 1;
- lol_users 테이블에서 지역별로 레이팅이 높은 순으로 유저들을 정렬해서 나열하는 쿼리를 작성해 주세요!
SELECT name
FROM lol_users
GROUP BY region
ORDER BY rating DESC ;
- lol_users 테이블에서 지역별로 평균 레이팅을 계산하는 쿼리를 작성해 주세요!
SELECT avg(rating)
FROM lol_users
GROUP BY region ;
문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/151137
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 오답:
SELECT CAR_TYPE, COUNT(CAR_ID) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS IN ('통풍시트', '열선시트', '가죽시트')
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE;
위 답을 쓴 이유는 options 안의 컬럼들을 or 없이 선택해 쿼리를 가독성있게 작성한 거였는데, 위의 쿼리로 실행하면 하나의 데이터도 추출 되지않았다. in 뒤에 통풍시트만 둬보기도 하고 ,열선시트 까지만 써보기도 했다.
하지만 결과에 나오는 데이터는 없었고, 예시 시트를 자세히 보다 깨달았다. 지금까지 예제는 하나의 컬럼 데이터에 한 가지 단어로 된 정보만 이 있었는데, options에는 여러 옵션을 넣은 단어들이 나열된 하나의 문자열 데이터였다.
그 말은 컴퓨터는 저 옵션들을 하나의 문자열 데이터로 보고 있기 때문에 in을 사용해서는 안 나온다는 것이었다.
나의 답:
SELECT CAR_TYPE, COUNT(CAR_ID) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS like '%통풍시트%' or like'%열선시트%' or like '%가죽시트%'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE;
그래서 나는 'LIKE'를 이용해 답을 맞힐 수 있었다.
그리고 문제에서 의도한 답은 REGEXP 함수를 사용하는 것이었다.
REGEXP 함수는 정규 표현식을 사용하여 패턴 매칭을 수행할 때 사용 된다고 한다. like를 사용하면 위의 답처럼 조금 문장이 길게 코드를 만들게 되는데 반해 REGEXP 함수를 사용하면
SELECT CAR_TYPE, COUNT(CAR_ID) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS REGEXP '통풍시트|열선시트|가죽시트'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE ;
이런 식으로 표현된다.
'SQL' 카테고리의 다른 글
코딩 테스트 SQL - 자동차 평균 대여 기간 구하기 (0) | 2024.08.02 |
---|---|
[TIL] SQL 연습문제 풀이: 조건에 맞는 사용자와 총 거래금액 조회하기,가격대 별 상품 개수 구하기 (0) | 2024.06.20 |
[TIL] SQL 코딩 테스트 연습 문제 (2) | 2024.06.13 |
[TIL]SQL 과제 Lv3. 이용자의 포인트 조회하기 (0) | 2024.06.12 |
[TIL] SQL 과제 Lv2. 날짜별 획득포인트 조회하기 (0) | 2024.06.11 |