MySql 피벗이 그룹화 된 행을 압축하지 않음

dmbania

이 피벗을 완료하는 데 문제가 있습니다. 나는 모든 종류의 일을 시도하고 있지만 이것이 정확하지 않은 것 같습니다. 하지만 내 운이 보통이어서 다시 다시 시작해야 할 수도 있습니다.

나는 여기에서 stackoverflow를 보았지만 내 상황에 맞는 것은 없습니다. 내가 읽은 다른 문제는 모든 숫자 데이터에 대한 것입니다. 문제가 될 수있는 숫자와 문자열이 섞여 있지만 이것에 대해 몇 가지 더 많은 눈이 필요합니다.

저는 시스템의 각 사용자에 대한 행과 그들이 수강하는 각 강의에 대한 점수를 표시하는 보고서를 작성하고 있습니다. 피벗 된 열은 "수업 모듈"을 나타내며 점수, "시작되지 않음"또는 "불완전"을 표시합니다.

다음은 몇 가지 쿼리의 결과입니다. 이것은 정확합니다 :

"결과"

+---------+-----------+--------------+-------------+
| user_id | module_id | total_failed | total_taken |
+---------+-----------+--------------+-------------+
|     605 |        89 |            0 |           0 |
|     605 |        90 |            0 |           0 |
|     605 |        91 |            0 |           0 |
|     606 |        89 |            2 |           3 |
|     606 |        90 |            1 |           4 |
|     606 |        91 |            0 |           0 |
|     634 |        89 |            0 |           3 |
|     634 |        90 |            0 |           4 |
|     634 |        91 |            0 |           0 |
+---------+-----------+--------------+-------------+

이 레코드 세트를 사용하여 피벗해야합니다.

user_id는 첫 번째 열에 남아 있고 다음 세 열은 강의 수와 동일한 열 수에 대한 사용자 결과로 피벗됩니다. 이 예에서는 단원 (모듈) 89, 90 및 91에 대한 세 개의 열이 있습니다.

"getModuleScore"세 가지 가능한 값 중 하나를 반환 하는 함수 만듭니다 : 사용자의 점수 (0.0 =< x =< 1.0)또는 두 개의 리터럴 중 하나 : '시작되지 않음'또는 '불완전'. (이것은이 함수가하는 일에 대한 간단한 설명입니다. 방금 작성한 것보다 조금 더 있습니다.)

다음 SQL을 사용하여 이전 결과 (SQL의 "results"테이블)를 피벗하는 경우

SELECT
    results.user_id AS user_id
    , 
        MAX(CASE WHEN module_id = 89
        THEN (SELECT getModuleScore(89, total_taken, total_failed))
        ELSE
            'not_started'
        END)
        AS `mod_89_score`
    , 
        MAX(CASE WHEN module_id = 90
        THEN (SELECT getModuleScore(90, total_taken, total_failed))
        ELSE
            'not_started'
        END)
        AS `mod_90_score`
    , 
        MAX(CASE WHEN module_id = 91
        THEN (SELECT getModuleScore(91, total_taken, total_failed))
        ELSE
            'not_started'
        END)
        AS `mod_91_score`

FROM
    results

GROUP BY 
    results.user_id
    , results.module_id

다음 레코드 세트를받습니다.

+---------+--------------+--------------+--------------+
| user_id | mod_89_score | mod_90_score | mod_91_score |
+---------+--------------+--------------+--------------+
|     605 | not started  | not_started  | not_started  |
|     605 | not_started  | not started  | not_started  |
|     605 | not_started  | not_started  | not started  |
|     606 | 0.333333333  | not_started  | not_started  |
|     606 | not_started  | 0.750000000  | not_started  |
|     606 | not_started  | not_started  | not started  |
|     634 | 1.000000000  | not_started  | not_started  |
|     634 | not_started  | 1.000000000  | not_started  |
|     634 | not_started  | not_started  | not started  |
+---------+--------------+--------------+--------------+

내가 원하는 것은 다음과 같습니다.

+---------+--------------+--------------+--------------+
| user_id | mod_89_score | mod_90_score | mod_91_score |
+---------+--------------+--------------+--------------+
|     605 | not started  | not_started  | not_started  |
|     606 | 0.333333333  | 0.750000000  | not_started  |
|     634 | 1.000000000  | 1.000000000  | not_started  |
+---------+--------------+--------------+--------------+

내가 시도한 것 :

  1. 계산할 올바른 데이터를 제공하기 위해 이미 내부 쿼리를 다시 작성했습니다.
  2. MAX (), MIN () 및 SUM ()으로 CASE 절을 묶었습니다.
  3. 결과 세트에서 NULLS를 제공하는 CASE 절에서 ELSE를 제거했습니다.
  4. GROUP BY 절 변경
dmbania

@AgRizzo는 나를 위해 그것을 얻었습니다.

res.module_id에서 제거했을 때 GROUP BY결과는 제가 찾고있는 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

텍스트 항목이 수정 된 후 Excel 피벗 필드 날짜가 그룹화되지 않음

분류에서Dev

재료 테이블 그룹화 된보기 행 추가에 그룹화 된 필드가 표시되지 않음

분류에서Dev

JXLS 수식이 지정된 필드로 출력을 그룹화하지 않음

분류에서Dev

MySQL : 각 그룹에서 처음 2 개 행을 선택하여 그룹화

분류에서Dev

그룹화 된 데이터의 명명 된 열을 사용하여 MySQL Group by

분류에서Dev

NTFS 압축을 사용하여 압축 된 7zip SQL 백업이 좋지 않습니까?

분류에서Dev

피벗 테이블을 사용하지 않고 테이블을 세 개의 열로 압축

분류에서Dev

COUNT (*)> X이면 그룹화하고 그렇지 않으면 항목을 그룹화하지 않음

분류에서Dev

예상대로 결과를 그룹화하지 않는 피벗 테이블

분류에서Dev

예상대로 결과를 그룹화하지 않는 피벗 테이블

분류에서Dev

행을 그룹화하는 SQL 피벗 기능

분류에서Dev

MySQL-유사한 행으로 그룹화 (정확히 동일하지 않음)

분류에서Dev

데이터를 그룹화하여 피벗 테이블을 만드는 방법

분류에서Dev

conemu 탭을 그룹화하지 않음

분류에서Dev

MySql 행을 제한하지만 행 그룹을 자르지 않음

분류에서Dev

R Shiny SelectizeInput : 그룹화 된 선택의 값 전달이 작동하지 않음

분류에서Dev

데이터 프레임을 그룹화하고 피벗 (?)하는 방법

분류에서Dev

그룹화 된 모든 검색된 행이 첫 달에 있음

분류에서Dev

mysql에서 새 그룹으로 그룹화 된 행을 추가하는 방법은 무엇입니까?

분류에서Dev

한 번에 2 개의 열을 그룹화하여 테이블에서 피벗 해제 수행

분류에서Dev

한 번에 2 개의 열을 그룹화하여 테이블에서 피벗 해제 수행

분류에서Dev

T-SQL-행을 열로 가져 오기 (피벗이 작동하지 않음)

분류에서Dev

MySQL : 특정 양을 초과하지 않는 그룹화 된 레코드 수를 반환

분류에서Dev

데이터를 피벗하기 위해 구조화되지 않은 텍스트 열로 그룹화

분류에서Dev

조건에 따라 그룹화 된 열을 표시하는 mysql

분류에서Dev

Python Pandas는 내부 그룹이 아닌 그룹 간 정렬 (그룹화 된 행을 재정렬하지만 groupby 이전에 원래 행 순서를 유지함)

분류에서Dev

하나의 피벗 된 테이블에서 SQL FOR XML 다중 레벨-데이터 그룹화

분류에서Dev

피벗되지 않은 테이블에서 계산 된 행을 만드는 방법은 무엇입니까?

분류에서Dev

이미 압축 된 파일을 압축하지 않도록 gzip / bzip2 / 7z / etc에 지시 하시겠습니까?

Related 관련 기사

  1. 1

    텍스트 항목이 수정 된 후 Excel 피벗 필드 날짜가 그룹화되지 않음

  2. 2

    재료 테이블 그룹화 된보기 행 추가에 그룹화 된 필드가 표시되지 않음

  3. 3

    JXLS 수식이 지정된 필드로 출력을 그룹화하지 않음

  4. 4

    MySQL : 각 그룹에서 처음 2 개 행을 선택하여 그룹화

  5. 5

    그룹화 된 데이터의 명명 된 열을 사용하여 MySQL Group by

  6. 6

    NTFS 압축을 사용하여 압축 된 7zip SQL 백업이 좋지 않습니까?

  7. 7

    피벗 테이블을 사용하지 않고 테이블을 세 개의 열로 압축

  8. 8

    COUNT (*)> X이면 그룹화하고 그렇지 않으면 항목을 그룹화하지 않음

  9. 9

    예상대로 결과를 그룹화하지 않는 피벗 테이블

  10. 10

    예상대로 결과를 그룹화하지 않는 피벗 테이블

  11. 11

    행을 그룹화하는 SQL 피벗 기능

  12. 12

    MySQL-유사한 행으로 그룹화 (정확히 동일하지 않음)

  13. 13

    데이터를 그룹화하여 피벗 테이블을 만드는 방법

  14. 14

    conemu 탭을 그룹화하지 않음

  15. 15

    MySql 행을 제한하지만 행 그룹을 자르지 않음

  16. 16

    R Shiny SelectizeInput : 그룹화 된 선택의 값 전달이 작동하지 않음

  17. 17

    데이터 프레임을 그룹화하고 피벗 (?)하는 방법

  18. 18

    그룹화 된 모든 검색된 행이 첫 달에 있음

  19. 19

    mysql에서 새 그룹으로 그룹화 된 행을 추가하는 방법은 무엇입니까?

  20. 20

    한 번에 2 개의 열을 그룹화하여 테이블에서 피벗 해제 수행

  21. 21

    한 번에 2 개의 열을 그룹화하여 테이블에서 피벗 해제 수행

  22. 22

    T-SQL-행을 열로 가져 오기 (피벗이 작동하지 않음)

  23. 23

    MySQL : 특정 양을 초과하지 않는 그룹화 된 레코드 수를 반환

  24. 24

    데이터를 피벗하기 위해 구조화되지 않은 텍스트 열로 그룹화

  25. 25

    조건에 따라 그룹화 된 열을 표시하는 mysql

  26. 26

    Python Pandas는 내부 그룹이 아닌 그룹 간 정렬 (그룹화 된 행을 재정렬하지만 groupby 이전에 원래 행 순서를 유지함)

  27. 27

    하나의 피벗 된 테이블에서 SQL FOR XML 다중 레벨-데이터 그룹화

  28. 28

    피벗되지 않은 테이블에서 계산 된 행을 만드는 방법은 무엇입니까?

  29. 29

    이미 압축 된 파일을 압축하지 않도록 gzip / bzip2 / 7z / etc에 지시 하시겠습니까?

뜨겁다태그

보관