Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- MySQL
- 서평단
- 독후감
- Google Analytics
- 한빛미디어서평단
- 매틀랩
- Python
- MATLAB
- 텐서플로
- 월간결산
- Ga
- 파이썬
- Visualization
- Blog
- 티스토리
- 블로그
- python visualization
- 딥러닝
- 리눅스
- Linux
- 통계학
- 서평
- matplotlib
- 한빛미디어
- Pandas
- Tistory
- tensorflow
- 시각화
- SQL
- 파이썬 시각화
Archives
- Today
- Total
pbj0812의 코딩 일기
[SQL] @rownum을 사용한 랭크 매기기 본문
0. 목표
- @rownum을 사용한 카테고리별 순서 매기기
* MySQL 8 이상이면 윈도우 함수 쓰는게 정신에 이로움
1. 실습
1) 테이블 생성
CREATE TABLE pbj_db.rownum_test
(
id INT NOT NULL,
body VARCHAR(32) NOT NULL
) ENGINE = INNODB;
2) 데이터 삽입
INSERT INTO pbj_db.rownum_test(id, body) VALUES(1, 'a');
INSERT INTO pbj_db.rownum_test(id, body) VALUES(1, 'b');
INSERT INTO pbj_db.rownum_test(id, body) VALUES(2, 'b');
INSERT INTO pbj_db.rownum_test(id, body) VALUES(3, 'c');
INSERT INTO pbj_db.rownum_test(id, body) VALUES(4, 'c');
INSERT INTO pbj_db.rownum_test(id, body) VALUES(5, 'c');
3) 확인
SELECT body, id FROM pbj_db.rownum_test;
- 결과
4) @rownum을 사용한 순서 매기기
SELECT
@rownum := @rownum+1, A.id, A.body
FROM pbj_db.rownum_test as A, (SELECT @rownum:=0) AS B;
- 결과
5) body별 순서 매기기
(1) B 테이블을 정의한 뒤 @tmp에 절대 테이블에 들어올 수 없는 값을 입력하고 @rownum에는 0을 입력
(2) @tmp가 만약 해당 행의 body의 내용과 같다면 1을 더하고 아니면 1로 초기화(첫 시도의 @tmp에는 공란이 저장되어 있기에 @rownum이 0에서 1로 초기화)
(3) 반복
SELECT
C.body,
C.id,
C.rnum
FROM (
SELECT
A.body,
A.id,
(CASE @tmp
WHEN A.body THEN @rownum := @rownum + 1
ELSE @rownum := 1 END) rnum,
(@tmp := A.body) tmp
FROM pbj_db.rownum_test AS A, (SELECT @tmp := '', @rownum := 0 FROM DUAL) B
ORDER BY A.body, A.id
) AS C
- 결과
2. 참고
'ComputerLanguage_Program > SQL' 카테고리의 다른 글
[SQL] MySQL 워크벤치로 csv 파일 import 하기 (0) | 2020.08.08 |
---|---|
[SQL] ROLLUP을 사용한 카테고리별 합계 (0) | 2020.08.06 |
[SQL] UPDATE 구문 실습 (0) | 2020.07.21 |
[SQL] MySQL Stored Procedure을 이용하여 주기적으로 현재 시각 저장하기 (0) | 2020.07.13 |
[SQL] MySQL 정규식 실습 (0) | 2020.06.30 |
Comments