본문 바로가기
데이터분석/TIL

240611 TIL

by Freely_ 2024. 6. 11.
728x90
반응형

!=
같지 않다는 의미

/=
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

 

728x90
반응형

'데이터분석 > TIL' 카테고리의 다른 글

240612 TIL  (1) 2024.06.12
240610 TIL  (1) 2024.06.10
240607 TIL  (0) 2024.06.07