문자열 데이터 다루기
쪼개기 :SUBSTRING_INDEX
select user_id, email, SUBSTRING_INDEX(email, '@', 1) from users
email 컬럼을 @을 기준으로 1번째거를 가져와줘(앞에는 1 뒤에는 -1임)
문자열 일부만 출력하기 : SUBSTRING
SELECT order_no, created_at, SUBSTRING(created_at, 1, 10) as date FROM orders o
substring(출력할 컬럼, 시작포인트, 시작부터 몇자?)
CASE
:경우에 따라 원하는 값을 새 필드에 출력해보기
select pu.point_user_id, pu.point,
case
when pu.point > 10000 then '잘 하고 있어요!'
else '조금 더 달려주세요!'
END as '구분'
from point_users pu;
조건에 따라 그에 맞는 새로운 이름을 넣어줄 수가 있다.
CASE WHEN ... ELSE....END
퀴즈풀기!
1. 평균 이상 포인트를 가지고 있으면 '잘 하고 있어요' / 낮으면 '열심히 합시다!' 표시하기!
SELECT pu.user_id,
pu.point,
(
case when point > (select avg(point) from point_users pu) then '잘 하고 있어요!'
else '열심히 합시다!'
end) as msg
from point_users pu
2. 이메일 도메인별 유저의 수 세어보기
나의답:
SELECT SUBSTRING_INDEX(email, '@', -1) as domain, count(*) FROM users u
group by DOMAIN
선생님 답:
select domain, count(*) as cnt from (
select SUBSTRING_INDEX(email,'@',-1) as domain from users
) a
group by domain
결과는 같았다!! 같은 결과를 내지만 다양한 풀이방법이 있을 수 있다는 점!!
3. '화이팅'이 포함된 오늘의 다짐만 출력해보기
SELECT * FROM checkins c
WHERE c.comment like '%화이팅%'
때로는 아주 간단하게 like 로 해결할 수 있는데 이걸 까먹고 복잡하게 푸는 경우가 있으니
심플하게 생각하려 할것!
4. 수강등록정보(enrolled_id)별 전체 강의 수와 들은 강의의 수 출력해보기 +
수강등록정보(enrolled_id)별 전체 강의 수와 들은 강의의 수, 그리고 진도율 출력해보기
with donedone as (
SELECT enrolled_id, count(*)as cnt_total
FROM enrolleds_detail ed
group by enrolled_id
), totaltotal as (
SELECT enrolled_id, count(*) as cnt_done FROM enrolleds_detail ed
WHERE done = '1'
group by enrolled_id
)
select a.enrolled_id, b.cnt_done, a.cnt_total, round((b.cnt_done/a.cnt_total),2) as ratio
from
donedone a
inner join
totaltotal b
on a.enrolled_id = b.enrolled_id
;;어려움
더~~ 간결하게도 풀수 있었다. sum을 이용해서.
select enrolled_id,
sum(done) as cnt_done,
count(*) as cnt_total
from enrolleds_detail ed
group by enrolled_id
가끔은 멀리서 봤을 대 조금 더 나은 쿼리를 만들 수도 있다.
SQL 4주 강의 공부 끝!
SQL을 거의 모르는 상태로 들었지만
너무재미있게 강의를 들을 수 있었다.
서브쿼리부터는 조금 어려워져서 혼자 풀지 못한 퀴즈들도 있었지만,
그래서 더욱 새로운걸 배운 보람찬 기분이 드는구만 ㅎㅎ
선생님이 너무 쉽게 잘가르쳐주신다 . 감사합니다!!
'Week I Learned' 카테고리의 다른 글
[내일배움카드 코딩 후기]연진아 나 지금 너무신나! 브라보 SQL!!(엑셀보다 쉬운 SQL) (1) | 2023.03.08 |
---|---|
[파이썬]스파르타코딩클럽 2주차 : 데이터분석기초, 해외주식 다루기 (0) | 2023.02.21 |
[SQL]개발일지(스파르타코딩국비교육4주차)_subquery,with.. (0) | 2023.02.16 |
[SQL]스파르타코딩클럽3-5,6,7 LEFT조인, UNION (0) | 2023.02.14 |
[SQL]스파르타코딩클럽3-3,4 본격 쿼리 작성해보기 스터디노트 (0) | 2023.02.13 |