!=
같지 않다는 의미
/=
a /= b 는 a=a/b와 동일
SQL
curdate()
'YYYY-MM-DD' 형식으로 현재 날짜를 문자열로 반환
datediff(date1, date2)
두 날짜 간의 차이를 일수로 반환
date1에서 date2를 뺀 차이를 반환
substr(string, start, length)
문자열의 일부를 추출
string : 추출할 원본 문자열
start : 추출 시작할 위치 (1부터 시작)
length : 추출할 문자열 길이 (생략 가능)
round(number, decimals)
소수점 아래 특정 자리까지 반올림
number : 반올림할 숫자
decimals : 반올림할 소수점 자리, 생략할 경우 기본값 0
연습문제 3) 상품 주문이 들어왔으니 주문을 처리해봅시다!
id | cutomer_id | product_id | amount | shipping_fee | order_date |
1 | 719 | 1 | 3 | 50000 | 2023-11-01 |
2 | 131 | 2 | 1 | 10000 | 2023-11-02 |
3 | 65 | 4 | 1 | 20000 | 2023-11-05 |
4 | 1008 | 3 | 2 | 25000 | 2023-11-05 |
5 | 356 | 1 | 1 | 15000 | 2023-11-09 |
order(주문) 테이블
9. orders 테이블에서 주문 수량(amount)이 2개 이상인 주문을 진행한 소비자의 ID(customer_id)만 선택하는 쿼리를 작성해주세요!
select customer_id
from orders
where amount >=2
10. orders 테이블에서 2023년 11월 2일 이후에 주문된 주문 수량(amount)이 2개 이상인 주문을 선택하는 쿼리를 작성해주세요!
select *
from orders
where order_date > '2023-11-02' and amount >= 2
11. orders 테이블에서 주문 수량이 3개 미만이면서 배송비(shipping_fee)가 15000원보다 비싼 주문을 선택하는 쿼리를 작성해주세요!
select *
from orders
where amount < 3 and shipping_fee > 15000
12. orders 테이블에서 배송비가 높은 금액 순으로 정렬하는 쿼리를 작성해주세요!
select *
from orders
order by shipping_fee desc
연습문제 4) 이제 놀만큼 놀았으니 다시 공부해봅시다!
id | name | track | grade | enrollment_year |
1 | 르탄이 | Node.js | A | 2023 |
2 | 배캠이 | Spring | B | 2022 |
3 | 구구이 | Unity | C | 2021 |
4 | 이션이 | Node.js | B | 2022 |
sparta_students(학생) 테이블
13. sparta_students 테이블에서 모든 학생의 이름(name)과 트랙(track)을 선택하는 쿼리를 작성해주세요!
select name, track
from sparta_students
14. sparta_students 테이블에서 Unity 트랙 소속이 아닌 학생들을 선택하는 쿼리를 작성해주세요!
select *
from sparta_students
where track <> 'Unity'
15. sparta_students 테이블에서 입학년도(enrollment_year)가 2021년인 학생과 2023년인 학생을 선택하는 쿼리를 작성해주세요!
select *
from sparta_students
where enrollment_year in(2021, 2023)
16. sparta_students 테이블에서 Node.js 트랙 소속이고 학점이 'A'인 학생의 입학년도를 선택하는 쿼리를 작성해주세요!
select enrollment_year
from sparta_students
where track = 'Node.js' and grade = 'A'
연습문제 5) 공부하다보니 팀 프로젝트 시간이 왔어요!
id | name | start_date | end_date | aws_cost |
1 | 일조 | 2023-01-01 | 2023-01-07 | 30000 |
2 | 꿈꾸는이조 | 2023-03-15 | 2023-03-22 | 50000 |
3 | 보람삼조 | 2023-11-20 | 2023-11-30 | 80000 |
4 | 사조참치 | 2022-07-01 | 2022-07-30 | 75000 |
team_projects(프로젝트) 테이블
17. team_projects 테이블에서 AWS 예산(aws_cost)이 40000 이상 들어간 프로젝트들의 이름을 선택하는 쿼리를 작성해주세요!
select name
from team_project
where aws_cost >= 40000
18. team_projects 테이블에서 2022년에 시작된 프로젝트를 선택하는 쿼리를 작성해주세요! 단, start_date < '2023-01-01' 조건을 사용하지 말고 쿼리를 작성해주세요!
select *
from team_project
where year(start_date) = 2022
19. team_projects 테이블에서 현재 진행중인 프로젝트를 선택하는 쿼리를 작성해주세요. 단, 지금 시점의 날짜를 하드코딩해서 쿼리하지 말아주세요!
select *
from team_project
where curdate() between start_date and end_date
20. team_projects 테이블에서 각 프로젝트의 지속 기간을 일 수로 계산하는 쿼리를 작성해주세요!
select name, datediff(end_date, start_date) workingdays
from team_project
[SQL 과제] Lv.1 데이터 속 김서방 찾기
"김"씨로 시작하는 이용자들 수 세어 보기, 컬럼 명은 name_cnt
SELECT COUNT(DISTINCT(user_id)) name_cnt
FROM users
WHERE name LIKE '김%'
로 풀었지만 제시된 답은
SELECT count(distinct(user_id)) as name_cnt
FROM
users
where substr(name,1,1) = '김'
첫 글자가 김인 경우나 like를 이용해 김으로 시작하는 경욱가 동일해 같은 값 출력
[SQL 과제] Lv2. 날짜별 획득포인트 조회하기
날짜별로 획득한 포인트의 평균 구하기
SELECT date(created_at) created_at, ROUND(avg(point)) average_points
FROM point_users
group by 1
'데이터분석 > TIL' 카테고리의 다른 글
240612 TIL (1) | 2024.06.12 |
---|---|
240610 TIL (1) | 2024.06.10 |
240607 TIL (0) | 2024.06.07 |