생각정리/항해99
[필수 트랙] SQL 1일차
생각중임
2023. 8. 3. 18:21
엑셀보다 쉬운 SQL 1주차
select문을 위주로 공부 시작
SQL 강의 동안 사용할 스파르타 데이터베이스 테이블 구조
- checkins: 여러분이 강의실 들어오시며 남기는 '오늘의 다짐'이 들어있어요
- courses: 스파르타의 개설 강좌 정보가 들어있어요
- enrolleds: 유저별 강좌 등록정보가 들어있어요
- enrolleds_detail: 유저별 들을 수 있는 영상과, 들었는지 여부가 들어있어요
- orders: 주문 (수강등록) 정보가 들어있어요
- point_users: 유저별 포인트 점수가 들어있어요
- users: 유저 정보가 들어있어요
자주 이용하는 문법
SELECT DISTINCT COUNT(*) -- 중복 데이터 제외 : DISTINCT, 조회수 세기 : COUNT()
FROM orders
WHERE payment_method != 'kakaopay' -- 아닌 데이터 조회 !=
AND created_at BETWEEN '2020-07-13 00:00:00' AND '2020-07-14 23:59:59' -- 특정 범위 조회 BETWEEN AND
AND email LIKE 's%com' -- 필요한 문자 조회 LIKE
AND course_title IN ('앱개발 종합반', '웹개발 종합반') -- 포함된 데이터 조회 IN
LIMIT 5 -- 데이터 조회수 제한 LIMIT
1주차 숙제
naver 이메일을 사용하면서, 웹개발 종합반을 신청했고 결제는 kakaopay로 이뤄진 주문데이터 추출하기
SELECT *
FROM orders
WHERE email LIKE '%naver.com'
AND course_title = '웹개발 종합반'
AND payment_method = 'kakaopay'
엑셀보다 쉬운 SQL 2주차
범주를 묶어 데이터를 통계 내어 사용하는 GROUP BY와 정렬하는 ORDER BY 사용
GROUP BY
where절과 별도로 사용가능
쿼리 실행 순서 : from -> group by -> select
Group by절 안에서 조건을 주기 위해 Having절을 같이 사용하기도 한다.
-- select 범주가 담긴 컬럼명,
-- count(개수를 알고 싶은 컬럼명),
-- min(최솟값을 알고 싶은 컬럼명),
-- max(최댓값을 알고 싶은 컬럼명),
-- avg(평균을 알고 싶은 컬럼명),
-- sum(합을 알고 싶은 컬럼명),
-- round(반올림 할 컬럼명, 소수점자리)
-- from 테이블명
--group by 범주가 담긴 컬럼
-- having 집계된 결과 필터링 조건
SELECT DATE(created_at), COUNT(*), MIN(point), MAX(point), ROUND(AVG(point),0) AVG, SUM(point)
FROM point_users
GROUP BY DATE(created_at)
HAVING COUNT(point) > 2
ORDER BY
where절과 group by절과 별도로 사용가능
쿼리 실행 순서 : from -> group by -> select -> order by
오름차순이 기본으로 적용된다. ASC : 올름차순 DESC : 내림차순
SELECT name, count(*)
FROM users
GROUP BY name
ORDER BY count(*)
-- ORDER BY 2 DESC 조회되는 컬럼 순서를 지정해서 사용가능
별칭 기능
Alias라는 별칭 기능으로 컬럼 및 테이블명을 간소화시켜 사용할 수 있다.
SELECT u.name, COUNT(*) as cnt -- as를 붙여줘도 되고 안붙여 줘도 된다.
FROM users u
WHERE u.email LIKE '%naver.com'
GROUP BY u.name
2주차 숙제
네이버 이메일을 사용하여 앱개발 종합반을 신청한 주문의 결제수단별 주문건수 세어보기
SELECT payment_method, COUNT(*)
FROM orders
WHERE course_title = '앱개발 종합반'
AND email LIKE '%naver.com'
GROUP BY payment_method