Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 음수 값을 포함한 히스토그램 표시하는 방법

MySQL에서 음수 값이 포함된 히스토그램을 표시하려면 reverse() 함수와 concat() 함수를 함께 활용하면 됩니다. 아래 예제를 통해 단계별로 살펴보겠습니다.

1단계: 테이블 생성

먼저 히스토그램 데이터를 담을 테이블을 만듭니다.

mysql> create table DemoTable632 (
    histogramId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    histogramValue int,
    histogramImage text
);
Query OK, 0 rows affected (0.78 sec)

2단계: 샘플 데이터 삽입

insert 명령어를 사용해 양수와 음수가 섞인 데이터를 입력합니다.

mysql> insert into DemoTable632(histogramValue) values(2);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable632(histogramValue) values(3);
Query OK, 1 row affected (0.34 sec)
mysql> insert into DemoTable632(histogramValue) values(-6);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable632(histogramValue) values(-5);
Query OK, 1 row affected (0.13 sec)

3단계: 전체 데이터 조회

select 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable632;

실행 결과는 다음과 같습니다.

+-------------+----------------+----------------+
| histogramId | histogramValue | histogramImage |
+-------------+----------------+----------------+
|          1 |           2 | NULL          |
|          2 |           3 | NULL          |
|          3 |          -6 | NULL          |
|          4 |          -5 | NULL          |
+-------------+----------------+----------------+
4 rows in set (0.00 sec)

4단계: 음수 값 히스토그램 쿼리 실행

다음은 음수 값까지 포함해 히스토그램을 표시하는 쿼리입니다.

mysql> SELECT histogramId, histogramValue, CONCAT(
    REVERSE(RPAD(REPEAT('*', IF(histogramValue<0,-histogramValue,0)), 100, ' ')),
    REPEAT('*',IF(histogramValue<0,0,histogramValue))
  )
AS histogramImage FROM DemoTable632 ORDER BY histogramId;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+-------------+----------------+----------------+
| histogramId | histogramValue | histogramImage |
+-------------+----------------+----------------+
|          1 | 2             | **            |
|          2 | 3             | ***           |
|          3 | -6            | ******        |
|          4 | -5            | *****         |
+-------------+----------------+----------------+
4 rows in set (0.00 sec)

쿼리 동작 원리

각 함수가 어떤 역할을 하는지 살펴보겠습니다.

  • IF(histogramValue<0, -histogramValue, 0): 값이 음수일 경우 부호를 제거한 절댓값을 구합니다.
  • REPEAT('*', n): 값의 크기만큼 별표(*)를 반복해 막대를 만듭니다.
  • RPAD(..., 100, ' '): 문자열을 공백으로 100자까지 채워 자릿수를 고정합니다.
  • REVERSE(...): 문자열을 뒤집어 음수 막대가 기준선 왼쪽에 위치하도록 합니다.
  • CONCAT(...): 음수 영역과 양수 영역을 하나의 문자열로 연결합니다.

이렇게 하면 양수 값은 기준선 오른쪽으로, 음수 값은 왼쪽으로 뻗어 나가는 형태의 히스토그램이 완성됩니다. 별도의 그래프 도구 없이 순수 SQL만으로 데이터 분포를 시각적으로 빠르게 확인해야 할 때 유용하게 활용할 수 있습니다.