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 |
Tags
- 오브젝트
- 클래스
- 쓰레드
- process
- 항해99장점
- 인스턴스화
- social login
- 객체지향 프로그래밍
- Dependency Injection
- object
- 부트캠프추천
- Thread
- 객체
- class
- 항해99솔직후기
- 인스턴스
- API
- 프로세스
- DI
- 회고록
- 항해99단점
- jvm
- Instance
- inversion of control
- 소셜
- IoC
- bean
- jwt
- 스레드
- 소셜로그인
Archives
- Today
- Total
로운's 기술노트
[프로그래머스] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (regexp) 본문
like 검색을 한 번에 여러 개 해주는 연산자가 있다고 한다!!
바로 regexp인데,
신기해서 바로 사용해 보았다.
사용방법은 아래와 같다.
where 컬럼명 regexp 정규식
ㅇ 정규식
. : 문자 하나
* : 앞 글자의 *개수 숫자 이상 반복
^ : 첫 값
$ : 끝값
[.] : 괄호 안의 문자열 일치 확인
{.} : 반복
| : or
※ 이 외에도 더 많은 정규표현식이 있으니 필요할 시, 검색!
그러나
결국 'regexp'를 써서 틀렸다.
다른 풀이와 대조하여 따로 테스트했을 때, 결과는 같은데 뭐가 다를까?!
# start_date regexp ('2022-08%'|'2022-09%'|'2022-10%') as 'regexp'
# START_DATE BETWEEN '2022-08-01' AND '2022-10-31' as 'BETWEEN'
튜터님께 문의해 보니 결과는 동일하나 문제 로직 상의 이유일 것으로 추정.
그리고 regexp의 경우는 이메일 등 특수문자 판별에 주로 사용되며,
형식만을 취해오는 구조이기 때문에 날짜와 같은 숫자 데이터 판별은 지양하는 것이 좋다.
또 보통 개발자들이 많이 사용하기는 하나, 기본 정규표현식 정도는 알아두면 도움이 된다고 한다.
결론 : 날짜 판별은 쓰던 대로 쓰자 ㅋㅋㅋ
정답
SELECT date_format(start_date,'%m') MONTH, car_id, count(*) RECORDS
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE (START_DATE BETWEEN '2022-08-01' AND '2022-10-31')
AND (CAR_ID IN (SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN '2022-08-01' AND '2022-10-31'
group by car_id
having count(history_id) >= 5
)
)
group by MONTH, car_id
order by MONTH, car_id desc;
'내배캠_데이터분석가_'24.04~08 > SQL' 카테고리의 다른 글
[프로그래머스] 오프라인/온라인 판매 데이터 통합하기 (UNION) (0) | 2024.04.23 |
---|---|
[프로그래머스] 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2024.04.23 |
[프로그래머스] 저자 별 카테고리 별 매출액 집계하기 (0) | 2024.04.22 |
[프로그래머스] 주문량이 많은 아이스크림들 조회하기 (0) | 2024.04.22 |
[프로그래머스] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2024.04.22 |
Comments