본문 바로가기

생각정리/항해99

[필수 트랙] SQL 1일차

엑셀보다 쉬운 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

 

'생각정리 > 항해99' 카테고리의 다른 글

[필수 트랙] SQL 3일차  (0) 2023.08.07
[필수 트랙] SQL 2일차  (0) 2023.08.04
웹개발 종합반 5주차  (0) 2023.07.23
웹개발 종합반 4주차  (0) 2023.07.21
웹개발 종합반 3주차  (0) 2023.07.20