본문 바로가기
AI SCHOOL/TIL

[DAY 15] SQL 첫 강의 - distinct, as, limit, 집계함수, where, group by

2023. 1. 13.

Special Lecture인 SQL 첫 강의였다.

수업 진행 방법 안내 후 SQL의 역할, RDBMS, SQL 문법 종류에 대해 강의 후 실습 환경을 구성했다.

실습 환경 : Google BigQuery

- 머신러닝, 지리정보 분석, 비즈니스 인텔리전스와 같은 기본 제공 기능으로 데이터를 관리하고 분석할  있게 해주는 완전 관리형 엔터프라이즈 데이터 웨어하우스

빅쿼리에 접속해서 새 프로젝트를 생성하고 프로젝트에 데이터셋을 추가해서 실습했다.
데이터셋을 추가했더니 실습에 사용할 수 있는 여러 테이블이 생겼다.

dataset
thelook_ecommerce 데이터셋 추가

실제 데이터를 조회한 양만큼 과금이 되며 일정 수준까지는 무료인 시스템인데
강사님이 실습 과정에서 금액이 발생할 일은 없을 거라고 하셨다.

빅쿼리를 처음 사용해 봤는데, 지금까지 사용해봤던 Oracle이나 MySQL과는 다른 부분이 있었다.
한글이 불가능하여 alias을 지정할 때도 한글을 쓸 수 없었다.
그리고 alias를 지정할 때 "(쌍따옴표)가 아니라 `(Grave)를 사용하며 _(underscore)외에 다른 특수 문자를 사용할 수 없었고 띄어쓰기도 불가했다.
그래도 실습간에 문제될 부분은 없어서 불편한 점은 없었다.

실습은 시작할 때 안내된대로 명령어를 학습하고 연습문제를 푸는 형식으로 진행됐다.

배운 것과 그 예시 연습문제 중 일부를 나열하며 정리하려고 한다.

select ~ from

# SQL 연습문제 1-3 : 주문정보(orders) 테이블의 모든 데이터를 조회하세요.
select * from thelook_ecommerce.users

# SQL 연습문제 1-4 : 회원(users) 테이블의 이메일(email) 정보를 조회하세요.
select email from thelook_ecommerce.users

# SQL 연습문제 1-6
# 상품정보(products) 테이블의 id, 카테고리(category), 이름(name), 판매가격(retail_price), 비용(cost)을 조회하세요.
select id, category, name, retail_price, cost
from thelook_ecommerce.products 

# SQL 연습문제 1-8
# 회원(users) 테이블의 이름(first_name), 나이(age), (2023 - 나이) 데이터를 조회하세요.
select first_name, age, 2023 - age
from thelook_ecommerce.users


limit, as, distinct

limit : 최대 출력 개수 지정
as : 별칭 지정
distinct : 중복 제거

# SQL 연습문제 2-2 회원(users) 테이블에서 이메일 주소(email) 20개를 조회하세요.
select email
from thelook_ecommerce.users
limit 20;

# SQL 연습문제 2-4
# 상품정보(products) 테이블에서 카테고리(category)를 중복제거하여 조회하세요.
select distinct category
from thelook_ecommerce.users

# SQL 연습문제 2-5
# 상품정보(products) 테이블에서 카테고리(category), 브랜드(brand)를 중복제거하여 30개 조회하세요.
# 각 결과 컬럼의 이름은 다음과 같이 지정하세요.
# - 카테고리 → product_category
# - 브랜드 → product_brand
select 
  distinct category as product_category,
  brand as product_brand
from `thelook_ecommerce.products`
limit 30;


where 조건절

- 비교 연산 : <=, >=, <, >=
- ==를 사용하지 않고 =를 사용
- 논리 연산 : and, or, not 

# SQL 연습문제 3-2
# 상품정보(products) 테이블에서 브랜드(brand)가 ‘2EROS’인 레코드의 id, 비용(cost), 브랜드(brand)를 조회하세요.
select id, cost, brand from `thelook_ecommerce.products`
where brand = '2EROS';

### SQL 연습문제 3-3
상품정보(products) 테이블에서 비용(cost)이 30이하이고 성별(department)이 ‘Men’인 레코드를 10개 조회하세요.
select * from `thelook_ecommerce.products`
where cost <= 30 and department = 'Men'
limit 10


- between과 like, 와일드카드 %

# SQL 연습문제 3-5
# 상품정보(products) 테이블에서 비용(cost)이 50이상이고 70이하인 모든 레코드를 조회하세요.
select * from `thelook_ecommerce.products`
where cost between 50 and 70;

# SQL 연습문제 3-6
# 상품정보(products) 테이블에서 상품명(name)에 ‘Men’과 ‘Sport’ 두 단어가 들어간 모든 레코드를 조회하세요.
select *
from `thelook_ecommerce.products`
where name like '%Men%'
and name like '%Sport%'


- 집계함수 : count, avg, sum, max, min, variance, stddev

# SQL 연습문제 4-1
# 회원(users) 테이블에서 전체 유저의 평균연령을 조회하세요.
select avg(age) from `thelook_ecommerce.users`

# SQL 연습문제 4-2
# 회원(users) 테이블에서 여성 유저의 평균연령을 조회하세요.
select avg(age) from `thelook_ecommerce.users`
where gender = 'F'


- GROUP BY

### SQL 연습문제 4-3 회원(users) 테이블에서 각 성별 유저 수를 조회하세요.
select gender, count(id)
from `thelook_ecommerce.users`
group by gender;

 

SQL 1일차임에도 상당히 많은 내용을 배운 것 같다.

반응형

댓글