나는이 일반적인 형식의 테이블을 가지고 있습니다. 그것은 피벗을 통해 생성되었으므로 열의 수가 고정되지 않습니다. 제가mysql은 한 열의 값으로 모든 열을 나눕니다 (벡터 계산 등)
필요한id c1 c2... total
10 0 2 1 1 0 4
9 0 1 0 1 0 2
8 1 2 0 0 0 3
7 0 0 0 1 0 1
6 0 1 0 1 1 3
5 1 0 0 1 2 4
4 0 1 1 0 0 2
3 0 3 0 1 1 5
2 2 2 2 0 0 6
1 1 0 1 0 0 2
은 "총 COL"를 (마지막 왼쪽) 수행하고, 각각의 전체로 {C1, C2, C3 ...} 열의 각 분할하는 것이다 .. 예를 들어 행 10, c2 = 2이면 c2/total = 2/4 = 0.5
강조하기 만하면됩니다. 고정되어 있지 않습니다. 이것은 샘플 표입니다.
mysql을 통해서만 가능하거나 외부 스크립트가 필요합니까?
많은 감사
편집이 명확히하기 위해 :, 두 번째는 "C가
첫 COL은"ID "입니다2 2
8 1
2 2
1 5
3 1
9 1
5 3
4 1
1 2
10 5
6 4
4 5
5 2
10 3
5 4
3 1
6 1
6 3
3 4
3 1
5 4
7 3
2 5
10 1
9 3
입니다 :
내 inital 데이터를 미리 회전을 다음과 같습니다 ". 도시 된 바와 같이, 그것은 우연히 정렬의 우발적 인 테이블로 변형 될 필요가있다. 각각의 ID에는 각 "c"{c1, c2, c3 ...}에 대한 개수가 있습니다.
이 데이터를 아래에 언급 된 @bobwienholt 형식으로 코딩하는 효율적인 방법이 있습니까? (나는 mysql을 처음 사용하는데, 실제로는 피봇 팅을 위해 오늘 나 자신에게 가르쳤다.
SELECT d.row, d.col, d.value/t.total
FROM (
SELECT row, SUM(value) as total
FROM data
GROUP BY row;
) t INNER JOIN data d
ON d.row = t.row
ORDER BY row, col;
그것은 "행"과 "열 중 수를 작동합니다 :
CREATE TABLE data (row INT, col INT, value INT);
이 그럼 당신은이 작업을 수행 할 수 있습니다 내가 당신이라면 다음과 같이
피벗하기 전에이 작업을 수행 할 수 있습니까? –
나는 십자가 합계를 미리 얻어야하기 때문에 나는 믿지 않는다? 아마 내가 잘못 본거야? – mrquestion
@MarkByers 어떤 제안이 있습니까? – mrquestion