728x90
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME !=''
ORDER BY 1
SELECT NAME,
DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC
SELECT COUNT(DISTINCT NAME) NAME
FROM ANIMAL_INS
SELECT ANIMAL_ID,
NAME
FROM ANIMAL_INS
ORDER BY 1
SELECT COUNT(ANIMAL_ID) 'COUNT'
FROM ANIMAL_INS
Lv2. 날짜별 획득포인트 조회하기
- 상황: 이번에는 이용자들이 잘 활동하고 있는지 보고자 합니다. 포인트가 많을수록 활동을 잘하고 있다고 생각 할 수 있습니다. 날짜별로 획득한 포인트가 점점 늘어나는지 줄어드는지 확인해 봅시다.
- 문제: 다음과 같은 결과테이블을 만들어봅시다.
- created_at: 익명화된 유저들의 아이디(varchar255)
- average_points: 유저가 획득한 날짜별 평균 포인트(int), 반올림 필수
Problem: 반올림 방법
Solution: -
Knowledge: ROUND 함수
ROUND(숫자 or 열 이름, *반올림할 자리 값)
(*반올림할 자리 값: 0이 소수점 첫째자리, 1이 소수점 둘째자리, -1은 1의자리)
[작성한 코드]
SELECT DATE(created_at) 'created_at',
ROUND(AVG(point)) 'average_points'
FROM point_users
GROUP BY 1
Lv3. 이용자의 포인트 조회하기
- 상황: 이번에는 이용자들 별로 획득한 포인트를 학생들에게 이메일로 보내려고 합니다. 이를 위한 자료를 가공해봅시다. 특히 users 테이블에는 있으나 point_users 에는 없는 유저가 있어요. 이 유저들의 경우 point를 0으로 처리합시다.
- 문제: 다음과 같은 결과 테이블을 만들어봅시다.
- user_id: 익명화된 유저들의 아이디
- email: 유저들의 이메일
- point: 유저가 획득한 포인트
- users 테이블에는 있지만 point_users에는 없는 user는 포인트가 없으므로 0 으로 처리
- 포인트 기준으로 내림차순 정렬
Problem:
#오류 : Column 'user_id' in field list is ambiguous
SELECT
user_id ,
email,
COALESCE(point,0) 'point'
FROM users u LEFT JOIN point_users p on u.user_id = p.user_id
ORDER BY point DESC
Solution:
SELECT
u.user_id ,
u.email,
COALESCE(p.point,0) 'point'
FROM users u LEFT JOIN point_users p on u.user_id = p.user_id
ORDER BY p.point DESC
Knowledge: JOIN으로 합친 데이터에서 불러와야 하기 때문에 SELECT 뒤에 불러오는 열이름 앞에는 지정해준 글자를 꼭 붙일 것!
728x90
'내일배움캠프 > TIL' 카테고리의 다른 글
[TIL] 241128_코드카타,RAND함수 (5) | 2024.11.28 |
---|---|
[TIL]241127_코드카타, SQL 연습문제4 (0) | 2024.11.27 |
[TIL]241125_SQL자격증준비 (1) | 2024.11.25 |
[TIL]SQL과제_Lv1. 데이터 속 김서방 찾기 (0) | 2024.11.22 |
[TIL]숫자 계산이나 문자 가공 시 자주 발생하는 오류, 사전캠프과제7 (0) | 2024.11.14 |