포스트

조건에 맞는 회원수 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/131535

문제

  • 문제 풀이
1
2
3
4
SELECT COUNT(USER_ID) "AS USERS"
FROM USER_INFO 
WHERE TO_CHAR(JOINED, 'YYYY') = '2021'
AND AGE BETWEEN 20 AND 29;
1
2
3
4
SELECT COUNT(*) AS "USERS"
FROM USER_INFO
WHERE JOINED BETWEEN TO_DATE('2021-01-01', 'YYYY-MM-DD') AND TO_DATE('2021-12-31', 'YYYY-MM-DD')
AND AGE BETWEEN 20 AND 29;


  • LIKE 연산자는 문자열 패턴 매칭을 위한 것이라 정확한 날짜 비교를 지원하지 않는다.
1
2
3
4
5
-- 오답
SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO
WHERE JOINED LIKE '2021-%'
AND (AGE >= 20 AND AGE <= 29);


  • Oracle에서는 날짜 형식을 정확하게 지정해야 한다. 날짜를 비교하기 위해서는 DATE 함수를 사용해야 한다.
1
2
3
4
5
-- 오답
SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO
WHERE JOINED BETWEEN '2021-01-01' AND '2021-12-31'
AND (AGE >= 20 AND AGE <= 29);


  • 실행 결과

실행 결과

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.