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