>데이터 베이스 >MySQL 튜토리얼 >GROUP BY를 사용하여 MySQL에서 데이터를 어떻게 피벗할 수 있습니까?

GROUP BY를 사용하여 MySQL에서 데이터를 어떻게 피벗할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-08 13:48:02860검색

How can you use GROUP BY to Pivot Data in MySQL?

MySQL GROUP BY를 사용하여 쿼리 결과 피벗

관계형 데이터베이스에서 데이터 피벗이란 데이터 시각화를 향상하기 위해 행과 열을 재배열하는 것을 의미합니다. . 여기서는 GROUP BY를 사용하여 데이터를 행 기반에서 열 기반으로 변환하는 일반적인 과제에 접근합니다.

쿼리

데이터를 피벗하려면 GROUP을 사용할 수 있습니다. SUM 또는 CASE와 같은 조건부 집계 함수와 함께 BY 절. 다음 쿼리를 고려해 보겠습니다.

<br>SELECT<br> d.data_timestamp,<br> SUM(CASE WHEN data_id = 1 THEN data_value ELSE 0 END) AS 'input_1',<br> SUM(CASE WHEN data_id = 2 THEN data_value ELSE 0 END) AS 'input_2'<br>FROM<br> data<br>GROUP BY<br> d.data_timestamp<br>ORDER BY<br> d.data_timestamp ASC;<br>

설명

  • 쿼리는 데이터 테이블에서 고유한 data_timestamp 값을 검색하고 결과를 data_timestamp별로 그룹화합니다.
  • 각 그룹 내에서 해당 data_id(예: data_id = 1의 경우 input_1).
  • SUM() 함수는 NULL 값의 경우 기본값을 0으로 설정하여 누락된 값을 처리합니다.
  • 쿼리의 출력은 열 형식으로 표시됩니다. 각 data_timestamp가 지정된 데이터 값의 합계와 연결된 형식 data_id.

대체 접근 방식

MySQL은 데이터 피벗을 위한 대체 방법도 제공합니다. 이러한 접근 방식에는 IF() 함수 또는 다중 수준 조인 사용이 포함됩니다.

IF() 함수

<br>SELECT<br> d. data_timestamp,<br> SUM(IF(data_id = 1, data_value, 0)) AS 'input_1',<br> SUM(IF(data_id = 2, data_value, 0)) AS 'input_2'<br>FROM<br> data<br>GROUP BY<br> d.data_timestamp<br>ORDER BY<br> d.data_timestamp ASC;<br>

다중 수준 조인

<br>SELECT<br> d.data_timestamp,<br> d01.data_value AS 'input_1',<br> d02.data_value AS 'input_2'<br>FROM<br> (</p>
<p>) AS d<br>LEFT JOIN<br> ​​data AS d01<br>ON<br> d01.data_timestamp = d .data_timestamp 및 d01.data_id = 1<br>LEFT JOIN<br> ​​데이터 AS d02<br>ON<br> d02.data_timestamp = d.data_timestamp AND d02.data_id = 2<br>ORDER BY<br> d.data_timestamp ASC;<br>

결론

MySQL의 GROUP BY 절은 쿼리 결과를 피벗하는 강력한 메커니즘을 제공합니다. CASE, IF() 및 다중 수준 조인 기술은 데이터 처리 및 다양한 데이터 구조 수용에 유연성을 제공합니다. 최적의 접근 방식을 선택하는 것은 특정 요구 사항과 성능 고려 사항에 따라 다릅니다.

위 내용은 GROUP BY를 사용하여 MySQL에서 데이터를 어떻게 피벗할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.