카테고리 없음

[TIL 14]

LHJ_ 2024. 12. 4. 21:08

코드카타 

SELECT CASE WHEN price >= 0 and price <10000 then 0
when price >= 10000 and price <20000 then 10000
when price >= 20000 and price <30000 then 20000
when price >= 30000 and price <40000 then 30000
when price >= 40000 and price <50000 then 40000
when price >= 50000 and price <60000 then 50000
when price >= 60000 and price <70000 then 60000
when price >= 70000 and price <80000 then 70000
when price >= 80000 and price <90000 then 80000
end price_group,count(*) products
FROM product
GROUP BY price_group
ORDER BY price_group

내가 짠 쿼리....뭔가 이상하다고 생각해서 두가지 정도 다른 방법을 찾아봄
SELECT FLOOR(PRICE/10000)*10000 PRICE_GROUP,
COUNT(*) PRODUCTS

FROM PRODUCT
GROUP BY FLOOR(PRICE/10000)*10000
ORDER BY PRICE_GROUP
SELECT 10000 * (PRICE DIV 10000) AS PRICE_GROUP, COUNT(*) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP


DIV는 나누기(/)와 같은 표시

왜 같은 값이 나오는지 정확하게 안 뜯어봤음< 프로젝트 끝나고 주말에 보기
SELECT user_id, nickname, total
FROM
(SELECT user_id, nickname, sum(price) total

FROM USED_GOODS_BOARD ugb INNER JOIN USED_GOODS_USER ugu on ugb.WRITER_ID=ugu.user_id #같은 데이터라도 각 테이블마다 컬럼명이 다를 수 있음
WHERE STATUS='done'
GROUP BY user_id) a
WHERE total>=700000
ORDER BY total

내가 쓴 쿼리.... 서브 쿼리를 쓰지 않은 방법이 있을 것 같아서 찾아봄
SELECT user_id, nickname, sum(price) total
FROM USED_GOODS_BOARD ugb INNER JOIN USED_GOODS_USER ugu on ugb.WRITER_ID=ugu.user_id
WHERE status='done'
GROUP BY user_id
HAVING total>=700000
ORDER BY total #서브쿼리 안 쓰는 방법을 꼭 생각해보기.. 습관 들었어..ㅠㅠ

질문 사항

SELECT animal_id, name, sex_upon_intake
FROM animal_ins
WHERE name IN('lucy','ella','pickle','rogan','sabrina','mitty')
#WHERE name REGEXP 'lucy|ella|pickle|rogan|sabrina|mitty' 왜 안 됨
ORDER BY animal_id
with 문
WITH 임시테이블이름 AS (
서브쿼리
)
SELECT * FROM 임시테이블이름;

  • 임시테이블을 여러번 재사용하거나 전체쿼리 구조를 심플하게 만들 때 유용!
    FROM 테이블이 간단해져서 쿼리 논리 따라갈 때 편함
CASE WHEN HOUR (event_time) = '0' THEN 00
WHEN HOUR (event_time) = '1' THEN 01
WHEN HOUR (event_time) = '2' THEN 02
WHEN HOUR (event_time) = '3' THEN 03
WHEN HOUR (event_time) = '4' THEN 04
WHEN HOUR (event_time) = '5' THEN 05
WHEN HOUR (event_time) = '6' THEN 06
WHEN HOUR (event_time) = '7' THEN 07
WHEN HOUR (event_time) = '8' THEN 08
WHEN HOUR (event_time) = '9' THEN 09
WHEN HOUR (event_time) = '10' THEN 10
WHEN HOUR (event_time) = '11' THEN 11
WHEN HOUR (event_time) = '12' THEN 12
WHEN HOUR (event_time) = '13' THEN 13
WHEN HOUR (event_time) = '14' THEN 14
WHEN HOUR (event_time) = '15' THEN 15
WHEN HOUR (event_time) = '16' THEN 16
WHEN HOUR (event_time) = '17' THEN 17
WHEN HOUR (event_time) = '18' THEN 18
WHEN HOUR (event_time) = '19' THEN 19
WHEN HOUR (event_time) = '20' THEN 20
WHEN HOUR (event_time) = '21' THEN 21
WHEN HOUR (event_time) = '22' THEN 22
WHEN HOUR (event_time) = '23' THEN 23
END
hour(event_time)


오른쪽의 하드 쿼리를 한번에 묶어주는 방법..
hour( time )은 date 데이터를 시 단위로 변환
위의 컬럼을 GROUP BY 해주면 시간 별로 그룹핑이 되면서!!!!!!!!! 왼쪽과 같은 결과 값이 나옴
나 뭐했냐 ㅋㅋ
피봇 테이블
ROW(행) 데이터를 요약하기 위해 사용

어떤 컬럼을 피벗(중심)으로 할지 결정
=>목표를 확고하게 하는 것이 좋음

나머지 피봇 테이블에 대해서 자세히 공부하기

프로젝트 진행하며 튜터님과 상담한 내용 정리

데이터를 분석할 때 어떠한 현상을 보고 결과가 이렇네에서 멈추지 말고 왜 이런 형상이 나왔는지 좀 더 자세하게 파고들기
( ex) 코로나 때 전체 매출이 떨어졌네 x
        코로나 때 전체 매출이 떨어졌는데 왜 떨어졌을까. 화장품 가게라면 밖에 잘 나가지 않아서? 아니면 물건을 사려고 했지만 품질이였어서? 와 같은 문제 지표 도툴