오늘의 학습에 대하여
- FIELD 함수 : 리스트 안에 값이 몇 번째에 위치하는지 알려주는 함수, 정렬에 활용할 수 있다.
1. 오늘 학습 한 내용을 나만의 언어로 정리하기
- FIELD 함수 : 리스트 안에서 값이 몇 번째에 위치하는지 알려주는 함수
SELECT FIELD('grape', 'apple', 'banana', 'cherry'); # 0 (값이 없으면 0으로 출력된다.)- 활용예시1) 정렬에 응용되기도 한다.
- ODRDER BY FIELD(ANIMAL_TYPE, 'Cat', 'Dog') #ANIMAL_TYPE이 'Cat'이면 1, 'Dog'이면 2를 반환한다. 따라서 숫자 기준으로 정렬되기 때문에 'Cat' -> 'Dog'순으로 나온다. 만약 ORDER BY ANIMAL_TYPE만 쓰면 알파벳 순으로 정렬된다.
- 활용예시2) case 문 대신 간단히 쓰인다.
- -- 이건 복잡한 CASE ORDER BY CASE role WHEN 'Manager' THEN 1 WHEN 'Team Lead' THEN 2 WHEN 'Staff' THEN 3 ELSE 4 END; -- 이건 FIELD로 간단하게 ORDER BY FIELD(role, 'Manager', 'Team Lead', 'Staff');
- SELECT FIELD('banana', 'apple', 'banana', 'cherry'); # 2
- WHERE 과 HAVING
- WHERE은 그룹화(집계)전에 필터링 한다 → 개별 행에 조건 걸기
- HAVING은 그룹화(집계)후에 필터링 한다. → 집계 결과에 조건 걸기
- 둘다 조건을 걸 때 사용하는데, 사용 시점과 대상이 다르다.
SELECT HOUR(DATETIME) as HOUR, -> 날짜시간형식 데이터에서 시간만 가져오기 COUNT(*) AS COUNT -> 시간대별 개수 세기 FROM ANIMAL_OUTS GROUP BY 1 HAVING HOUR BETWEEN 9 AND 19 -> 그룹핑 한 것 중에서 9 ~ 19 값만 보기 ORDER BY 1 -> 시간 오름차순으로 정렬하기 #GROUP BY & HAVING은 짝꿍이다. 그룹으로 묶은 다음에 그중 일부 결과값만 보려고 하면 HAVING 구문을 쓰는 것이다. WHERE는 먼저 필터링 후 연산하는 것이다. - 참고로 WHERE 절에는 집계함수(COUNT, MAX)사용할 수 없다.
2. 학습하며 겪었던 문제점 & 에러
- WHERE price = Max(price) ( X )
- WHERE 절에는 집계 함수 사용할 수 없다. 이것이 SQL 문법이다.
3. 내일 학습 할 것은 무엇인지
- [ ] SQL 코드카타를 통해 전반적으로 복습
- [ ] SQL 강의의 실습 풀어보기 > 어려운 건 다시 시청하기
#내일배움캠프 #사전캠프 #TIL
'SQL' 카테고리의 다른 글
| 250528_SQL(RANK), 파이썬(함수) (0) | 2025.05.28 |
|---|---|
| 250523_내일배움캠프_어려운 쿼리문(UNION ALL, LEFT JOIN) (0) | 2025.05.23 |
| 250521_내일배움캠프_window function(rank, sum), date_format (0) | 2025.05.21 |
| 250516_내일배움캠프_SQL(서브쿼리, groub by, having) (0) | 2025.05.16 |
| 250515_내일배움캠프_SQL(if, case) (0) | 2025.05.15 |