집 >데이터 베이스 >MySQL 튜토리얼 >GROUP BY를 사용하여 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>
설명
대체 접근 방식
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!