티스토리 뷰


아래와 같은 데이터가 있습니다.

mysql> select sipv4,timestamp,bytes from oops;
+-----------+-----------+---------+
| sipv4     | timestamp | bytes   |
+-----------+-----------+---------+
| 171115273 |         9 |      40 | 
| 169152406 |        10 | 2772021 | 
| 169152406 |        10 |  142312 | 
| 174325910 |        10 |   51029 | 
| 169152406 |        11 | 1254172 | 
| 171115273 |        15 |    3192 | 
| 169152406 |        14 |     132 | 
| 169152406 |        15 |   11516 | 
| 171115273 |        16 | 2883472 | 
| 171115273 |        16 | 2801983 | 
| 172464385 |        19 | 2681305 | 
| 172464385 |        19 | 1300716 | 
| 171115273 |        17 |  111969 | 
+-----------+-----------+---------+
13 rows in set (0.00 sec)

이 데이터를 아래와 같은 형태로 출력하는게 목표입니다.

+-----------+------+---------+---------+------+------+------+-------+---------+--------+------+
| sipv4     | t9   | t10     | t11     | t12  | t13  | t14  | t15   | t16     | t17    | t18  | ........
+-----------+------+---------+---------+------+------+------+-------+---------+--------+------+
| 169152406 | NULL | 2914333 | 1254172 | NULL | NULL |  132 | 11516 |    NULL |   NULL | NULL | ........
| 171115273 |   40 |    NULL |    NULL | NULL | NULL | NULL |  3192 | 5685455 | 111969 | NULL | ........
| 172464385 | NULL |    NULL |    NULL | NULL | NULL | NULL |  NULL |    NULL |   NULL | NULL | ........
| 174325910 | NULL |   51029 |    NULL | NULL | NULL | NULL |  NULL |    NULL |   NULL | NULL | ........
+-----------+------+---------+---------+------+------+------+-------+---------+--------+------+
4 rows in set (0.00 sec)

쿼리를 바로 확인해보도록 합니다.

select sipv4
, sum(case when timestamp = '9' then bytes end) as t9
, sum(case when timestamp = '10' then bytes end) as t10
, sum(case when timestamp = '11' then bytes end) as t11
, sum(case when timestamp = '12' then bytes end) as t12
, sum(case when timestamp = '13' then bytes end) as t13
, sum(case when timestamp = '14' then bytes end) as t14
, sum(case when timestamp = '15' then bytes end) as t15
, sum(case when timestamp = '16' then bytes end) as t16
, sum(case when timestamp = '17' then bytes end) as t17
, sum(case when timestamp = '18' then bytes end) as t18
from oops
group by sipv4;

각 내용의 합을 구하는 SUM과 테이블 이름 변환을 위해 사용한 AS 말고는 특별한 내용이 없습니다.

머리로는 될것같은데.. 막상 쿼리 만드는게 쉽지는 않네요~


일단, 예제 차원에서 포스팅해놓습니다.




'개발 > DB' 카테고리의 다른 글

[mysql] 접속 아이디와 패스워드의 매핑  (0) 2015.06.25
[mysql] unixtime 갖고 놀기  (0) 2014.03.20
[mysql] concat()  (0) 2013.09.26
[mysql] 프로시져 등록  (0) 2013.07.15
[mysql] mysql 상태보기  (0) 2013.07.08
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday