Contents
내가 작성한 쿼리
각 급여 카테고리에 대한 은행 계좌 수를 계산하는 솔루션을 작성합니다.
급여 카테고리는 다음과 같습니다:
* "Low Salary": 모든 급여는 엄밀히 말하면 2만 달러 미만입니다.
* "Average Salary": 포함된 모든 급여 [$20,000, $500,000].
* "High Salary": 모든 급여가 5만 달러를 초과합니다.
* 결과 테이블에는 세 가지 카테고리가 모두 포함되어야 합니다.
카테고리에 계정이 없는 경우 0을 반환합니다.
결과 테이블을 순서에 상관없이 반환하세요.
내가 작성한 쿼리
MySQL
SELECT
c.category,
COUNT(a.account_id) AS accounts_count
FROM (
-- 더미 테이블 생성
SELECT 'Low Salary' AS category
UNION ALL
SELECT 'Average Salary'
UNION ALL
SELECT 'High Salary'
) AS c
LEFT JOIN Accounts a -- 각 범주에 해당하는 월급 JOIN
ON (c.category = 'Low Salary' AND a.income < 20000)
OR (c.category = 'Average Salary' AND a.income BETWEEN 20000 AND 50000)
OR (c.category = 'High Salary' AND a.income > 50000)
GROUP BY
c.category;
Oracle
SELECT
c.category,
COUNT(a.account_id) AS accounts_count
FROM (
SELECT 'Low Salary' AS category FROM dual
UNION ALL
SELECT 'Average Salary' FROM dual
UNION ALL
SELECT 'High Salary' FROM dual
) c
LEFT JOIN Accounts a
ON (c.category = 'Low Salary' AND a.income < 20000)
OR (c.category = 'Average Salary' AND a.income BETWEEN 20000 AND 50000)
OR (c.category = 'High Salary' AND a.income > 50000)
GROUP BY
c.category;
차이점
- 더미 테이블 생성 방식의 차이
MySQL
:SELECT ... UNION ALL
바로 사용 가능Oracle
:FROM dual
사용 필요
- 서브쿼리 별칭 규칙
MySQL
:AS
사용 가능Oracle
:AS
사용 불
Share article