[SQL 100제#75-80] ALL, ANY, EXISTS, NOT EXISTS
·
✏️ Study/PostgreSQL
[강의명] 패스트캠퍼스 SQL 100제 + 자격증 완성 온라인 완주반 [수강목록] 6주차 과제 풀이 (SQL 75~80번 문제) [강의내용] 문제75번) 매출을 가장 많이 올린 dvd 고객 이름은? (subquery 활용) 서브쿼리를 활용하여 매출이 가장 많은 customer_id를 구하고, 메인쿼리에서 고객 이름을 구한다. SELECT c.first_name, c.last_name, t1.sum FROM customer c JOIN ( SELECT p.customer_id, sum(p.amount) FROM payment p GROUP BY p.customer_id ORDER BY sum DESC LIMIT 1 ) AS t1 ON c.customer_id = t1.customer_id; 문제76번) 대..
[SQL 100제#67-74] UNION, UNION ALL, EXCEPT, IN, NOT IN
·
✏️ Study/PostgreSQL
[강의명] 패스트캠퍼스 SQL 100제 + 자격증 완성 온라인 완주반 [수강목록] 5주차 과제 풀이 (SQL 67~74번 문제) [강의내용] 문제67번) 180분 이상 길이의 영화에 출연하거나, rating이 R인 영화에 출연한 배우에 대해서 배우 ID와 (180분 이상 / R등급 영화)에 대한 Flag컬럼을 알려주세요. - 1) film_actor 테이블과 film 테이블을 이용하세요. - 2) union, unionall, intersect, except 중 상황에 맞게 사용해주세요. - 3) actor_id가 동일한 flag값이 여러개 나오지 않도록 해주세요. WHERE절을 통해 필터링을 쉽게 할 수 있지만 플래그 컬럼을 생성해야하기 때문에 가장 쉬운 방법인 UNION을 쓴다 180분 이상 영화에 ..
[SQL 100제#54-66] SUM, COUNT, ROUND, CASE WHEN, 서브쿼리
·
✏️ Study/PostgreSQL
[강의명] 패스트캠퍼스 SQL 100제 + 자격증 완성 온라인 완주반 [수강목록] 4주차 과제 풀이 (SQL 54~66번 문제) [강의내용] 문제54번) store별로 staff는 몇명이 있는지 확인해주세요. 집계함수인 COUNT를 쓰면, 그룹별 컬럼의 갯수를 셀 수 있다. 집계함수를 쓸 때 주의할 점은 FROM절 뒤에 GROUP BY절을 명시해서 어떻게 그룹지을지를 설정해주어야 한다. SELECT s.store_id, count(st.staff_id) FROM store s JOIN staff st ON s.store_id = st.store_id GROUP BY s.store_id; store_id별로 staff_id의 갯수를 세어주게 된다. 문제55번) 영화등급(rating) 별로 몇개의 영화를 가..
[SQL 100제#47-53] JOIN, LEFT JOIN, CASE
·
✏️ Study/PostgreSQL
[강의명] 패스트캠퍼스 SQL 100제 + 자격증 완성 온라인 완주반 [수강목록] 3주차 과제 풀이 (SQL 39~53번 문제) [강의내용] 문제47번) 고객 id별로 고객의 이름 (first_name, last_name), 이메일, 고객의 주소 (address, district), phone, city, country 를 알려주세요. 문제 46번처럼, customer_id 별 주소 이므로 SELECT절에서 맨 앞에 customer_id를 써주는 것을 유의하면 된다. SELECT c.customer_id, c.first_name, c.last_name, c.email, a.address, a.district, a.phone, ci.city, co.country FROM customer c JOIN add..
[SQL 100제#39-46] JOIN, LEFT JOIN
·
✏️ Study/PostgreSQL
[강의명] 패스트캠퍼스 SQL 100제 + 자격증 완성 온라인 완주반 [수강목록] 3주차 과제 풀이 (SQL 39~53번 문제) [강의내용] 문제39번) 고객의 기본정보인 고객id, 이름, 성, 이메일과 함께 고객의 address, district, postal_code, phone을 함께 보여주세요. 고객id, 이름, 성, 이메일 컬럼은 customer 테이블에 존재한다. 그리고 address를 비롯한 나머지 컬럼들은 address 테이블에 존재한다. 다른 테이블을 한 쿼리에서 사용하기 위해 FROM뒤에 JOIN을 써서 추가할 테이블을 입력해준다. 그리고 ON 뒤에 두 테이블간의 공통 컬럼을 적어준다. SELECT c.customer_id, c.first_name, c.last_name, a.addre..
[SQL 100제#30-38] OR, IN, IS NULL, IS NOT NULL
·
✏️ Study/PostgreSQL
[강의명] 패스트캠퍼스 SQL 100제 + 자격증 완성 온라인 완주반 [수강목록] 2주차 과제 풀이 (SQL 21~38번 문제) [강의내용] 문제30번) customer 테이블을 이용하여 이름이 Maria, Lisa, Mike에 해당하는 고객의 id, 이름, 성을 확인해주세요. 이름이 3개 중 하나라도 해당되는 고객들의 정보를 출력해야 한다. WHERE ~ IN (문자열 집합)을 사용하면 된다. SELECT customer_id, first_name, last_name FROM customer c WHERE first_name IN ('Maria', 'Lisa', 'Mike'); 문제31번) film 테이블을 이용하여, film의 길이가 100~120 에 해당하거나 rental 대여기간이 3~5일에 해당..
[SQL 100제#21-29] LIKE, BETWEEN, DATE
·
✏️ Study/PostgreSQL
[강의명] 패스트캠퍼스 SQL 100제 + 자격증 완성 온라인 완주반 [수강목록] 2주차 과제 풀이 (SQL 21~38번 문제) [강의내용] 문제21번) film 테이블을 활용하여, film 테이블의 100개의 row만 확인해보세요. LIMIT 절을 입력하면 행 수를 설정할 수 있다. (참고로 Oracle에서는 LIMIT가 지원되지 않기 때문에 대신 ROWNUM 절을 사용한다) SELECT * FROM film f LIMIT 100; 100개의 행만 출력되는 것을 확인할 수 있다. (쿼리 결과 생략) 문제22번) actor의 성(last_name)이 Jo로 시작하는 사람의 id 값이 가장 낮은 사람 한사람에 대하여, 사람의 id 값과 이름, 성을 알려주세요. 문자열 타입 데이터를 추출하는 조건을 부여하기..
[SQL 100제#11-20] SELECT, WHERE, COUNT, AND, OR, UPPER
·
✏️ Study/PostgreSQL
[강의명] 패스트캠퍼스 SQL 100제 + 자격증 완성 온라인 완주반 [수강목록] 1주차 과제 풀이 (SQL 1~20번 문제) [강의내용] 문제11번) 영화배우의 이름 (이름+' '+성) 에 대해서, 대문자로 이름을 보여주세요. 단 고객의 이름이 동일한 사람이 있다면, 중복 제거하고 알려주세요. 문자열을 연결하기 위해 지난번에 다루었던 || 기호를 사용한다. 그리고 문자열을 대문자로 바꾸기 위해 UPPER 함수를 사용한다. (소문자로 바꾸는 함수는 LOWER() 이다) SELECT DISTINCT upper(first_name ||' '|| last_name) AS fullname FROM actor; 대문자로 잘 변경된 것을 볼 수 있다. 문제12번) 고객 중에서, active 상태가 0인 즉 현재 사..