본문 바로가기

[공부] SQL

(18)
[SQL 코딩테스트] 해커랭크 Basic Join 정답 Population Census, African Cities, Average Population of Each Continent ⏰ 3:53 -- Population Census SELECT SUM(C1.POPULATION) FROM CITY C1 JOIN COUNTRY C2 ON C1.COUNTRYCODE = C2.CODE WHERE C2.CONTINENT = 'Asia' -- African Cities SELECT C1.NAME FROM CITY C1 JOIN COUNTRY C2 ON C1.COUNTRYCODE = C2.CODE WHERE C2.CONTINENT = 'Africa' -- Average Population of Each Continent SELECT C2.CONTINENT, FLOOR(..
[SQL 코딩테스트] 해커랭크 Aggregation 정답 FROM CITY 모음 ⏰ 06:48 -- Revising Aggregations - The Count Function SELECT COUNT(ID) FROM CITY WHERE POPULATION > 100000 -- Revising Aggregations - The Sum Function SELECT SUM(POPULATION) FROM CITY WHERE DISTRICT = 'California' -- Revising Aggregations - Averages SELECT AVG(POPULATION) FROM CITY WHERE DISTRICT = 'California' -- Average Population SELECT FLOOR(AVG(POPULATION)) FROM CITY -- Japan P..
[SQL 코딩테스트] 해커랭크 Advanced Select 정답 The PADS ⏰ 11:26 CONCAT 안에 COUNT 같은걸 넣고, 뒤에서 GROUP BY로 묶어줘도 문제가 없다는 걸 처음 알았다! SELECT CONCAT(NAME, '(', LEFT(OCCUPATION,1), ')') AS A FROM OCCUPATIONS ORDER BY 1 ; SELECT CONCAT('There are a total of ', COUNT(OCCUPATION), ' ', LOWER(OCCUPATION), 's.') AS A FROM OCCUPATIONS GROUP BY OCCUPATION ORDER BY COUNT(OCCUPATION), OCCUPATION ; Type of Triangle ⏰ 7:30 지난번에 리트코드인가에서 금방 풀었던 문제인데, CASE WHEN 구문 ..
[SQL 코딩테스트] 해커랭크 Basic Select 정답 리트코드와 프로그래머스에 있는 SQL 문제를 다 풀고 마지막으로 해커랭크로 넘어왔다. 어떤 블로그에서 해커랭크가 문제는 제일 많지만 질이 좀 떨어지는 것 같다는 평을 봤는데, 어쨌든 그동안 해온 결실이 있게 나에게 문제가 더 쉽게 풀리기만 한다면 더 바랄게 없겠다. Revising the Select Query I, II / Select All / Select By ID / Japanese Cities' Attributes / Japanese Cities' Names ⏰ 03:17 -- Revising the Select Query I SELECT * FROM CITY WHERE POPULATION > 100000 AND COUNTRYCODE = 'USA' -- Revising the Select Que..
[SQL 코딩테스트] 리트코드 Subqueries 정답 현업에서 서브쿼리보다 WITH구문을 더 선호한다는 이야기를 들었지만... 상황에 따라 적절한 구문을 잘 활용할 수 있는 게 최선일 테다. 처음으로 HARD가 있는 챕터. 화이팅! [EASY] 1978. Employees Whose Manager Left the Company LEFT JOIN / IS NULL ⏰ 8:30 LEFT JOIN RIGHT JOIN을 각각 어떤 상황에서 써야 하는지, 결과값이 어떻게 나오는지 아직도 약-간 헷갈린다. 반복 연습이 답! SELECT E1.EMPLOYEE_ID FROM EMPLOYEES E1 LEFT JOIN EMPLOYEES E2 ON E1.MANAGER_ID = E2.EMPLOYEE_ID WHERE E1.SALARY < 30000 AND E2.EMPLOYEE_I..
[SQL 코딩테스트] 리트코드 Advanced Select and Joins 정답 과연 베이직 챕터의 MEDIUM보다 어드밴스드 챕터의 EASY가 정말 더 쉬울것인가... 두둥 [EASY] 1731. The Number of Employees Which Report to Each Employee SELF JOIN / COUNT / AVG ⏰ 6:30 SELECT E1.EMPLOYEE_ID, E1.NAME, COUNT(E2.EMPLOYEE_ID) REPORTS_COUNT, ROUND(AVG(E2.AGE),0) AVERAGE_AGE FROM EMPLOYEES E1 JOIN EMPLOYEES E2 ON E1.EMPLOYEE_ID = E2.REPORTS_TO GROUP BY 1 ORDER BY 1 [EASY] 1789. Primary Department for Each Employee UNI..
[SQL 코딩테스트] 리트코드 Advanced String Functions / Regex / Clause 정답 무슨 문제가 나오는 건지 예상이 안되는 챕터..? EASY가 많으니 훈련한다 생각하고 해보자! [EASY] 1667. Fix Names in a Table CONCAT / UPPER / LOWER / SUBSTR ⏰ 4:23 SELECT USER_ID, CONCAT(UPPER(SUBSTR(NAME,1,1)),LOWER(SUBSTR(NAME,2))) AS NAME FROM USERS ORDER BY 1 [EASY] 1527. Patients With a Condition LIKE ⏰ 4:03 SELECT * FROM PATIENTS WHERE CONDITIONS LIKE 'DIAB1%' OR CONDITIONS LIKE '% DIAB1%' [EASY] 196. Delete Duplicate Emails D..
[SQL 코딩테스트] 프로그래머스 JOIN 정답 [LV4] 주문량이 많은 아이스크림들 조회하기 UNION / LIMIT ⏰ 5:38 WITH ORDER_T AS (SELECT * FROM FIRST_HALF UNION ALL SELECT * FROM JULY ) SELECT FLAVOR FROM ORDER_T GROUP BY FLAVOR ORDER BY SUM(TOTAL_ORDER) DESC LIMIT 3 [LV4] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 WITH / WHERE ⏰ 66:06 이렇게까지 오래 걸릴 문제는 아니었는데... 날짜 설정에서 애를 먹어서 시간을 많이 잡아먹었다. 이번에도 나는 WITH로 쉽게(?) 풀어버리려고 했는데, WHERE절에 서브쿼리를 써서 더 깔끔하게 푸신 분의 풀이를 같이 공유한다. [정답1] 여러 조..