Oxygen Cherry - Pencil
본문 바로가기

새싹 데이터 분석 교육 (24.05.13~24.08.16)/TIL

[성동2기 전Z전능 데이터 분석가] 0710

728x90

미완

기초 SQL 학습 5일차

❇️ 오늘 배운 내용 
1. 
2. 
3. 쿼리사관학교

 

 

 

주요 개념

 

             
             

 


오전 강의 

 

 

 

| 결합 이어서 

요약

 

  • 결합 

어제 배운 결합은 inner join임. 교집합만 가져오는 거. 

오늘 배울 건 나머지 outer join으로, left right full 

 

 

left 조인은 꽤 많이 쓰고 

right 조인과 full 조인은 덜 씀. 

 

 

select

from 기준 테이블명 inner join 부수적 테이블명

on g.GenreId = t.TrackId 

그룹바이

오덜바이

 

select g.Name, count(track) as trackcount, sum(t.Milliseconds)

from genre g inner join track t

on g.GenreId = t.TrackId ; 

 

where 상품3.상품분류 = '식료품'

이런 거 붙여서 특정 조건만 가져오는 것도 가능함. 

 

 

on에 쓴 열만 합쳐주나¿¿ 앗 그 소리는 아니겠지 어 다른 것도 붙여주는데 

 

 

 

  • 프로덕트 선정

 

 

full outer join = union 

전체를 다 출력할 때 쓰는 것 

 

SELECT * from 테이블1 LEFT JOIN 테이블2 UNION SELECT * from 테이블1 RIGHT JOIN 테이블2

 

유니온은 기본적으로 중복되는 걸 없애줌. 

 

만약 all union 했으면 열 7개 떴을 거임 다 떠서. 

 

 

join이 예약어가 업는 이유는 많이 안써서? 자동완성에 안뜨는... 

order by 

group by 

inner join 

left join

right join

union 

자동완성 안되는 것들 

 

방법

  1. 자동완성 등록하는 법 찾기 - best
  2. 단축키 등록법 찾기
  3. 파이썬에서 그랬듯 기초 복붙 파일 만들어서 ㅇㅇ... 클립보드로다가... 

 

 

 

? 이거 왜 먹힘 (이름이 ㅇㅇ) 

답은 안나옴 

 

 

ㄹㄹ

 

 

 

outer join Q2 해답

-- 나의 풀이 -- 
select a.Name , count(a2.AlbumId) as album_count , (select a2.Title from album a2 
where a2.AlbumId = (select max(a2.AlbumId) 
from album a2 where ArtistId = a.ArtistId group by a2.ArtistId)) as "최근 발매한 타이틀"
from artist a 
left join album a2 
on a.ArtistId = a2.ArtistId 
group by a.ArtistId , a.Name 
order by album_count desc, a.Name ;


-- 멘토님 풀이 --
SELECT 
    ar.Name AS ArtistName,
    COUNT(al.AlbumId) AS AlbumCount,
    (SELECT Title 
     FROM Album 
     WHERE ArtistId = ar.ArtistId 
     ORDER BY AlbumId DESC 
     LIMIT 1) AS LatestAlbum
FROM 
    Artist ar
LEFT JOIN 
    Album al ON ar.ArtistId = al.ArtistId
GROUP BY 
    ar.ArtistId, ar.Name
ORDER BY 
    AlbumCount DESC, ArtistName ASC;


-- 다른 분이 푼 것 
select a1.Name , a2.countAlbum, a2.Title 
from artist as a1 
left join (select a.ArtistId, a.recentAlbumID, a.countAlbum, b.Title from 
(select ArtistId, count(AlbumID) as countAlbum, max(AlbumId) as recentAlbumID 
from album group by ArtistId ) as a 
inner join album as b on a.recentAlbumID= b.AlbumID ) as a2 
on a1.ArtistId = a2.ArtistID 
order by a2.countAlbum desc, a1.Name asc ;


-- 강사님이 다른 분 풀이에 with 달아주신 것 
with a as (select ArtistId, count(AlbumID) as countAlbum, max(AlbumId) 
as recentAlbumID from album group by ArtistId )
select a1.Name , a2.countAlbum, a2.Title
from artist as a1
left join (select a.ArtistId, a.recentAlbumID, a.countAlbum, b.Title
from a
inner join album as b
on a.recentAlbumID= b.AlbumID ) as a2
on a1.ArtistId = a2.ArtistID
order by a2.countAlbum desc, a1.Name asc

 

우리 조 통칭 엑셀의 신이 

최근 발매일 열이 없는데 앨범 아이디로 구하면 되냐고 하셔서 

아하! 했음 

 

나의 풀이법: max 씀 (원래 min 쓰다가 엑셀의 신이신 분이 max 쓰는 거 보고 앗 나의 실수 이러고 고침)

멘토님 풀이법: 숫자니까 정렬 사용

다른 분 풀이법: 엄청난... 참조... 

 

--

어떤 점을 고쳤느냐 

멘토님 풀이 보면서 

그룹화에 아티스트아이디 넣음 

그리고 where에 아티스트 = 하는 거 넣음 

-- 이건 되고

select ArtistId, max(a2.AlbumId) from album a2 group by a2.ArtistId

-- 이건 안됨

select ArtistId, Title , max(a2.AlbumId) from album a2 group by a2.ArtistId

 

그래서 

where ArtistId = a.ArtistId  

넣어야겠다고 생각함... 

 

풀긴 풀엇는데 개념과 원리가 좀 헷갈림;; 

기준열이 필요하겠구나 알겟는데 왜 필요한건데 

 

 

ㄹㄹ

 

LAG 예제
SELECT
YEAR(InvoiceDate) as Year,
MONTH(InvoiceDate) as Month,
SUM(Total) as MonthlyTotal,
LAG(SUM(Total)) OVER (ORDER BY YEAR(InvoiceDate), MONTH(InvoiceDate)) as PreviousMonthTotal,
SUM(Total) - LAG(SUM(Total)) OVER (ORDER BY YEAR(InvoiceDate), MONTH(InvoiceDate)) as MonthOverMonthChange
FROM Invoice
GROUP BY YEAR(InvoiceDate), MONTH(InvoiceDate)
ORDER BY Year, Month;

 


  • 프로덕트 선정

 

  • Data 기억하기

 


CREATE VIEW view이름 AS
SELECT 문

 

 

CREATE VIEW customer_custom AS
SELECT custmer ; 

 

 

 

 

 

 

 

CREATE VIEW과 with의 차이?

가상의 테이블과 서브쿼리의 차이? 

가상의 테이블을 from에 불러올 수 있는데 업데이트 삭제 등을 못함. 

다른 테이블과 같은 이름을 가질 수 없음.  

 

 

  • 프롬프트 엔지니어링 Tip, RAG의 개념 알기

 

우리가 쓰는 데이터셋은 이거고 데이터는 이렇게 생겼다 이런 특성이 있다. 

이러면서 명령을 잘해야 함 

인공지능/LLM에게 명령을 잘하는 기술을 바로 "프롬포트 엔지니어링"이라고 함 

 

예를 들어

~하는 sql문 알려줘 보다는 

 

우리 데이터가 이런 형태고 이런 걸 만들려고 하는데, 

mysql 쿼리로 알려줘 

 

라그

 

 

 

PDF에 예시는 영어지만 요즘은 한글로도 인스트록션 작성 가능함. 

 

 

 

 

 


오후 강의 

| 소제목

요약

 

 

  • 프로덕트 선정

 

 

 

 

 

ㅀㅎ

 

 

 

ㅇㅀㅇ

 

 

 

 

| 개인 경험 정리 - 이력서, 자소서 용

요약 생략?

 

 

 

  • 프로덕트 선정

 

  • 프로덕트 선정

 

 

  • 프로덕트 선정

 

  • 프로덕트 선정

 

 

 

불-편

원형 눌러서 데이터 계열 서식 누르면 저기서 조정 가능함. 

 

 

근데 계열 분할이 위치다 보니 이렇게 불편한 사태가 초래함. 

 

백분율 값으로 고침. 

 

 

여전히 보기 불편한데, 

분할을 2개 이상 못하나? 

색깔 지저분한데 하나하나 바꾸는 수밖에 없나? 

0%인 거 못 빼나? 

 

 

 

경험 2번
시기 2021년 8월
WHAT 연속 아카데미 사업 데이터 총정리 및 인사이트 도출
WHY  
HOW  
WHAT  
HOW  

 

 


 

여담

 

 

https://chatgpt.com/share/1c1bd51c-abe7-43ab-91a0-27662ffeaccb

 

 

 


 

[회고]

 

 

어 ㅋㅋ 기술블로그 시간에 9번 푼다고 못했다 ㅋㅋ

9번은 좀 어려운 내용이라 패스하셨고 각자 풀어보라고 하셨는데 

하 각 고객별 젤 높은 거 1개만 나오게 하면 되는데 아! 

 

오늘은 약속 있으니 낼 ㄱㄱ다 

 

 

 


#청년취업사관학교 #데이터분석가 #데이터분석가부트캠프 #DA교육 #데이터분석교육 #실무프로젝트 #실무경험 #취업포트폴리오 #포트폴리오 #취업연계교육 #코멘토 #모비니티 

728x90