[1. 오늘 배운 것]
1. HAVING
- 집계가 이미 수행된 이후에 자료를 필터링하기 때문에 GROUP BY 뒤에 위치함
- 집계 결과를 필터로 사용할 수 있음
- SELECT문의 SUM은 HAVING에서 사용할 수 없음
- 즉, GROUP BY까지 실행된 결과를 HAVING으로 필터링하는 것!
2. 연습 문제
- 결제 건수가 40 이상인 고객에게 플래티넘 지위를 할당할 때 자격이 있는 고객 반환
- SELECT customer_id FROM payment GROUP BY customer_id HAVING COUNT(*) >= 40;
- 직원ID 2와의 결제 거래에서 100달러를 초과하여 사용한 고객의 고객id 반환
- SELECT customer_id, SUM(amount) FROM payment WHERE staff_id=2 GROUP BY customer_id HAVING SUM(amount) >100
3. 평가 시험
- ID가 2인 직원에게서 최소 110달러 이상을 결제한 고객의 ID
- SELECT customer_id, SUM(amount) FROM payment WHERE staff_id=2 GROUP BY customer_id HAVING SUM(amount)>=110;
- J로 시작하는 영화의 수
- SELECT COUNT(*) FROM film WHERE title LIKE "J%";
- 이름이 E로 시작하며 ID가 500 미만인 고객 중 ID번호가 가장 높은 고객
- SELECT first_name, last_name FROM customer WHERE first_name LIKE "E%" AND address_id<500;
4. AS
- 열이나 결과에 별칭(대체 이름) 부여
- 쿼리문의 가장 마지막에 실행됨
- 즉 GROUP BY와 WHERE에서는 AS연산자를 사용할 수 없다는 것
5. INNER JOIN
- JOIN : 여러 테이블을 하나로 결합하는 것
- 두 테이블을 모두 충족하는 레코드 세트를 결과로 출력
- 교집합
- 쿼리문에서 테이블의 순서를 서로 바꿔도 영향 없음
- SELECT * FROM TABLE A INNER JOIN TableB ON TableA.col = TableB.col;
6. FULL OUTER JOIN
- 결합되는 테이블 중 하나에만 표시되는 값을 처리하는 방식 지정
- 쿼리문에서 테이블의 순서를 서로 바꿔도 영향 없음
- 합집합
- 중복값 출력 X
7. LEFT OUTER JOIN
- 왼쪽 테이블에 있는 레코드 세트를 결과로 출력
- 오른쪽 테이블에서는 일치하는 레코드만 출력
- 비대칭이므로, 테이블의 순서가 중요
- 오른쪽 테이블에 값이 없으면 null로 채워짐
8. RIGTH OUTER JOIN
- 오른쪽 테이블에 있는 레코드 세트를 결과로 출력
- 왼쪽 테이블에서는 일치하는 레코드만 출력
- 비대칭이므로, 테이블의 순서가 중요
- 왼쪽 테이블에 값이 없으면 null로 채워짐
9. UNION
- 2개 이상의 SELECT문 결과 세트를 결합할 수 있음
- JOIN과의 차이점 : 두 결과를 직접 붙임
10. 연습 문제
- 고객들에게 이메일로 공지할 때 특정 지역에 살고 있는 고객의 이메일 반환
SELECT dstirct, email
FROM address
INNER JOIN customer ON address.address_id = customer.address_id
WHERE district = 'California';
- 닉 월버그가 나오는 모든 영화의 제목 반환
SELECT title, first_name, last_name
FROM film_actor.artor_id = actor.actor_id
INNER JOIN film ON film_actor.film_id. = film.film_id
WHERE first_name='Nick' AND last_name = 'Wahlberg';
11. 타임스탬프
- TIME : 시간만 포함
- DATE : 날짜만 포함
- TIMESTAMP : 날짜와 시간 포함
- TIMESTAMPZ : 날짜, 시간 그리고 표준시간대 정보
12. 연습문제
- 어떤 달에 지급이 이뤄졌는지 반환
- SELECT DISTINCT(TO_CHAR(payment_date, 'MONTH')) FROM payment;
- 월요일에 지급이 얼마나 이뤄졌는지 반환
- SELECT COUNT(*) FROM payment WHERE EXTRACT(dow FROM payment_date) = 1;
13. 수학 함수와 연산자
- / : 나누기
- ROUND(value, num) : 소수점을 num자리까지 반올림
- * : 곱하기
14. 문자열 함수와 연산자
- length(col) : 문자열 길이 반환
- col1 || col2 : 문자열 합치기
- UPPER(col) : 문자열 전체를 대문자로 변환
- Lower(vol) : 문자열 전체를 소문자로 변환
- LEFT(col, num) : 왼쪽에서 num개의 문자만 남김
15. 서브쿼리
- 첫 번째로 실행됨
- IN, EXISTS와 함께 사용하면 유용함
- 반의 평균 점수보다 더 높은 점수를 가진 학생과 성적을 반환
- SELECT student, grade FROM test_scores WHERE grade > (SELECT AVG(grade) FROM test_scores)
16. 셀프조인
- 표가 자체에 합쳐져있는 쿼리
- 같은 표 내에 여러 열 속 여러 값을 비교할 때 쓰임
[2. 오늘 잘한 점]
어제 스터디에서 MySQL과 MongoDB 비교하는 역할에 딱 걸려버렸는데 몇시간만에 (겨우겨우) 해냈다 내가 해냄
[3. 개선해야할 점]
스터디시간에 각자 발표를 했는데 내가 몽고디비를 처음 공부해서 더듬거리느라 정확한 정보 전달이 어려웠다. ㅜㅜ 오타도 많았음 죄송합니다 앞으로는 정신 똑바로 차리겠습니다.
'부트캠프' 카테고리의 다른 글
[TIL] 유데미X사람인 취업 부트캠프 16일차 / JShell, 자바 기초 (1) | 2024.01.05 |
---|---|
[TIL] 유데미X사람인 취업 부트캠프 15일차 / SQL 데이터베이스 생성, 관리 (1) | 2024.01.04 |
[TIL] 유데미X사람인 취업 부트캠프 13일차 / SQL 쿼리문 SELECT~GROUP BY (1) | 2024.01.02 |
[TIL] 유데미X사람인 취업 부트캠프 12일차 / react-상태 (1) | 2023.12.29 |
[TIL] 유데미X사람인 취업 부트캠프 11일차 / react (0) | 2023.12.28 |