반응형
다음과 같은 테이블이 있습니다.
Name Year Value
A 2000 5
A 2001 3
A 2002 7
A 2003 1
B 2000 6
B 2001 1
B 2002 8
B 2003 2
사용자는 연도 범위를 기준으로 쿼리 할 수 있으며 이름별로 그룹화 된 값의 합계를 반환합니다 (쿼리 된 연도가 2000-2001이라고 가정).
Name SUM(Value)
A 8
B 7
이제 모든 연도에 대한 각 이름 값의 합계와 모든 값의 합계 비율을 출력하는 계산 된 필드를 삽입하고 싶습니다. 기본적으로 다음과 같이 각각 A와 B에 귀속되는 모든 값의 백분율입니다.
Name SUM(Value) % Of Total
A 8 0.484 (16 / 33)
B 7 0.516 (17 / 33)
사용자가 2000-2001 년만 쿼리했지만 계산에서 모든 연도에 걸쳐 합계를 사용하기를 원합니다. 몇 시간 동안 검색하고 실험 해 왔지만 방법을 알 수 없습니다. 나는 다음과 같이 쿼리 된 연도를 합산하는 방법 만 알고 있습니다.
SELECT `Name`, SUM(`Value`)/(SELECT SUM(`Value`) FROM `table1`) AS "% of Total"
FROM `table1`
WHERE `Year` BETWEEN 2000 AND 2001
GROUP BY `Name`;
도와주세요! 저는 초보자이고 SQL을 깊이 이해하지 못하므로 고급 코드를 명확히하십시오. 당신의 친절에 감사드립니다.
해결 방법
FROM 절에서 하위 쿼리를 사용하여 총계 (그리고 원하는 백분율에서)를 계산할 수 있습니다.
SELECT Name,
SUM(Value) AS "SUM(VALUE)",
SUM(Value) / totals.total AS "% of Total"
FROM table1,
(
SELECT Name,
SUM(Value) AS total
FROM table1
GROUP BY Name
) AS totals
WHERE table1.Name = totals.Name
AND Year BETWEEN 2000 AND 2001
GROUP BY Name;
하위 쿼리에는 연도를 필터링하는 WHERE 절이 없습니다.
참조 페이지 https://stackoverflow.com/questions/9970495
반응형
'MySql' 카테고리의 다른 글
MySQL 데이터베이스의 테이블 크기를 얻는 방법 (0) | 2020.09.15 |
---|---|
MySQL 자동 증가 시작 번호를 변경 하는 방법 (0) | 2020.09.15 |
MySQL 문자열이 JSON인지 여부를 테스트하는 방법은 무엇입니까? (0) | 2020.09.15 |
MySQL ID를 사용하여 여러 SQL 테이블을 조인하려면 어떻게해야합니까? (0) | 2020.09.15 |
MySQL 날짜 형식-날짜 삽입 어려움 (0) | 2020.09.15 |
댓글