WHERE
- 데이터에 조건을 부여해서 원하는 데이터만 필터링
- 여러 연산자 결합 가능
- 결합 가능 연산자의 종류 : 비교연산자(=, <, >, !=, >=, <=), SQL연산자(BETWEEN), 논리 연산자(AND, OR) 등
SELECT *
FROM `thelook_ecommerce.users`
WHERE first_name = 'Michael';
비교 연산자
- 레코드를 검색할때 값을 비교하여 조건에 맞는 데이터만 표현연산자 종류
SELECT *
FROM `thelook_ecommerce.users`
WHERE traffic_source != 'Search';
논리 연산
우선순위는 NOT, AND, OR입니다. and는 곱으로, or는 덧셈으로 이해하면 계산이 쉬움
select * from `thelook_ecommerce.users`
where id < 10000
and first_name = 'David'
select * from `thelook_ecommerce.users`
where NOT(country = 'United States' or country = 'Brasil');
BETWEEN 연산
A와 B를 포함한사이의 값
select *
from `thelook_ecommerce.users`
where age between 20 and 30
select *
from `thelook_ecommerce.users`
where age>=20 and age<=30
IN 연산
A안에 값과 일치하는 값 조회
select *
from `thelook_ecommerce.products`
where brand in ('Onia', 'Hurley', 'Matix');
LIKE 연산
LIKE'비교문자'
- 비교문자와 형태가 일치(%(모든문자), _(한글자) 사용)
- 대소문자 안 가림
- % 는 와일드 카드
product의 name안에 Young이 포함된 레코드를 조회
select *
from `thelook_ecommerce.products`
where name like '%Young%';
product의 name이 Hurley 로 시작되는 레코드를 조회
select *
from `thelook_ecommerce.products`
where name like 'Hurley%';
product의 name이 T-shirt 로 끝나는 레코드를 조회
select *
from `thelook_ecommerce.products`
where name like '%T-shirt';
언더바는 한개의 글자를 포함
언더바의 갯수가 3개이므로 Da로 시작하고 뒤에 3글자가 붙어서 총 5글자인 user 레코드를 조회
select distinct first_name
from `thelook_ecommerce.users`
where first_name like 'Da___'
IS NULL
NULL 값을 갖는 값(0은 값이 있는 것임)
select *
from `thelook_ecommerce.order_items`
where shipped_at IS NULL;
SQL 연습문제 3-1
상품정보(products) 테이블에서 카테고리(category)가 ‘Swim’ 인 레코드의 모든 항목를 조회
select *
from `thelook_ecommerce.products`
where category = 'Swim'
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
SQL 연습문제 3-4
상품정보(products) 테이블에서 판매가격(retail_price)이 40이상인 레코드들의 카테고리(category) 속성값을 중복제거(distinct)하여 조회
select distinct category
from `thelook_ecommerce.products`
where retail_price >= 40
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%'
SQL 연습문제 3-7
상품정보(products) 테이블에서 브랜드(brand)가 ‘TYR’가 아니고 이름(name)에 ‘Suit’가 포함되고 할인율이 50이상인 모든 레코드와 할인율을 조회합니다.
할인율 : (비용/판매비용)*100
할인율의 컬럼 이름은 sale_price로 표현합니다.
select *, (cost / retail_price) * 100 as sale_price
from `thelook_ecommerce.products`
where brand != 'TYR' and
name like '%Suit%' and
(cost / retail_price) * 100 >= 50
프로그래머스 문제 3-1 (level 1)
https://school.programmers.co.kr/learn/courses/30/lessons/131528
-- 코드를 입력하세요
SELECT
COUNT(USER_ID) AS USERS
from user_info
where age IS NULL
프로그래머스 문제 3-2 (level 2)
https://school.programmers.co.kr/learn/courses/30/lessons/59046
SELECT ANIMAL_ID,
NAME,
SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME in ('Lucy', 'Ella', 'Pickle','Rogan','Sabrina', 'Mitty')
ORDER BY ANIMAL_ID
'AI SCHOOL > SQL' 카테고리의 다른 글
[SQL] 숫자, 문자열 함수, 날짜 함수 연습문제(프로그래머스) (0) | 2023.01.25 |
---|---|
[SQL] 숫자, 문자열 함수 (0) | 2023.01.25 |
[SQL] HAVING, ORDER BY (0) | 2023.01.20 |
[SQL] GROUP BY, 집계함수 (0) | 2023.01.20 |
[SQL] SQL과 데이터베이스 / select, from / as, limit, distinct (0) | 2023.01.13 |