본문 바로가기
SQL

SQL 5일차 - 원하는 데이터 만들기

by 푸리세상 2024. 4. 11.
728x90

1. 데이터 줄세우기 가져오기

    1) 가져온 데이터를 정렬 : ORDER BY

       - ORDER BY [컬럼 이름] 형식으로 사용, 입력한 [컬럼 이름]의 값을 기준으로 row를 정렬

       - 오름차순 : ORDER BY [컬럼 이름] = ORDER BY [컬럼 이름] ASC

       - 내림차순 : ORDER BY [컬럼 이름] = ORDER BY [컬럼 이름] DESC

--오름차순 정렬
SELECT [컬럼 이름] FROM [테이블 이름]
WHERE 조건식 ORDER BY [컬럼 이름] ASC;

--내림차순 정렬
SELECT [컬럼 이름] FROM [테이블 이름]
WHERE 조건식 ORDER BY [컬럼 이름] DESC;

 

 

예제 1) number 데이터를 내림차순 정렬해서 가져오기

SELECT number, name
FROM mypokemon
ORDER BY number DESC;

 

 

 

예제 2) attack, defense 데이터를 내림차순으로 정렬해서 가져오기

SELECT number, name, attack, defense
FROM mypokemon
ORDER BY attack DESC, defense;

attack에 중복같이 존재하여 먼저 정렬 후 defense 값으로 한번더 정렬해주기

 


 

2. 데이터 순위 만들기

   1) 데이터를 정렬해 순위를 만들기 : RANK

       - RANK() OVER (ORDER BY [컬럼 이름]) 형식으로 사용

SELECT [컬럼 이름], ..., RANK() OVER(ORDER BY [컬럼이름] DESC)
FROM [테이블 이름]
WHERE 조건식;

 

 

예제 1) attack 데이터를 내림차순으로 가져오고 attack_rank라고 별칭으로 rank 가져오기

SELECT name, attack, RANK() OVER(ORDER BY attack DESC) AS attack_rank
FROM mypokemon;

 

 


    2) 공동 순위가 있어도 다음 순위를 뛰어넘지 않음 : DENSE_RANK

 

예제 1) DENSE_RANK를 사용하여 데이터 가져오기

SELECT name, attack, DENSE_RANK() OVER(ORDER BY attack DESC) AS attack_dense_rank
FROM mypokemon;

 

 

 

    3) 공동 순위를 무시 : ROW_NUMBER

 

예제 1) ROW_NUMBER를 사용하여 데이터 가져오기

SELECT name, attack, ROW_NUMBER() OVER(ORDER BY attack DESC) AS attack_row_number
FROM mypokemon;

 

 

비교1) RANK, SENSE_RANK, ROW_NUMBER 비교

SELECT name, attack,
	RANK() OVER(ORDER BY attack DESC) AS rank_rank,
	DENSE_RANK() OVER(ORDER BY attack DESC) AS rank_dense_rank,
	ROW_NUMBER() OVER(ORDER BY attack DESC) AS rank_row_number
FROM mypokemon;

 

 

 


3. 문자형 데이터 정복하기

예시 테이블

 

 

  1) LOCATE : 몇번째 위치해 있는지 검색해 위치 반환

 

예제 1) i 위치 검색

SELECT part, LOCATE("i", lyric)
FROM bts_music.butter;

 

 

   2) SUBSTRING : N번째 문자부터 반환.

 

예제 1) 2번째 문자부터 반환하기

SELECT part, SUBSTRING(lyric, 2)
FROM bts_music.butter;

 

 

 

    3) RIGHT(오른쪽), LEFT(왼쪽) : 문자열, 숫자열을 N번째 문자까지 반환

 

예제 1) 오른쪽 3번째, 왼쪽 3번째 문자까지 반환하기

SELECT part, RIGHT(lyric,3), LEFT(lyric,3)
FROM bts_music.butter;

 

 

 

     4) UPPER(대문자), LOWER(소문자) : 대문자, 소문자로 바꿔서 반환

 

예제 1) 대문자, 소문자로 바꿔서 반환하기

SELECT part, UPPER(lyric), LOWER(lyric)
FROM bts_music.butter;

 

 

 

     5) LENGTH : 글자 수를 반환

 

예제 1) 글자수 반환하기

SELECT part, LENGTH(lyric)
FROM bts_music.butter;

 

 

 

      6) CONCAT : 문자열과 문자열을 합쳐서 반환

 

예제 1) 문자열 합쳐서 반환하기

SELECT part, CONCAT(LEFT(lyric,1), RIGHT(lyric,1)) AS first_last
FROM bts_music.butter;

 

 

       7) REPLACE : 문자열을 바꿔서 변환

예제 1) 공백을 _로 바꿔서 변환

SELECT part, REPLACE(lyric," ","_")
FROM bts_music.butter;

 


 

728x90

'SQL' 카테고리의 다른 글

에러 : Error Code: 1175  (1) 2024.06.12
MySQL 단축키 정리  (0) 2024.06.07
SQL 4일차 - 조건에 맞는 데이터 가져오기  (2) 2024.03.29
SQL 3일차 - 데이터 가져오기  (0) 2024.03.27
SQL 강의 2일차 - 데이터베이스 다루기  (1) 2024.03.26