SELECT *,
Group_concat(rating) AS rating_total,
Sum(rating_total) AS rating_sum,
Avg(rating_sum) AS rating_avg
FROM ratings
GROUP BY pid
어떤 이유로 든 합계와 평균은 실행되지 않습니다 ....이 문장을 어떻게 작동 시키나요?SQL GROUP_CONCAT + SUM + AVG
SELECT *,
Group_concat(rating) AS rating_total,
Sum(rating_total) AS rating_sum,
Avg(rating_sum) AS rating_avg
FROM ratings
GROUP BY pid
어떤 이유로 든 합계와 평균은 실행되지 않습니다 ....이 문장을 어떻게 작동 시키나요?SQL GROUP_CONCAT + SUM + AVG
SQL이 쿼리를 컴파일하는 방식 때문에 (GROUP_CONCAT을 사용하고 있기 때문에 MySQL을 사용한다고 가정 함) order by 절 앞에 별칭이 지정된 열 이름을 참조 할 수 없습니다. SUM 및 AVG 함수 은 절차 번호이 아닙니다. 그것들은 병행하여 행해진 다. 이는 그들이 부양 할 수 없다는 것을 의미합니다.
두 번째로 GROUP_CONCAT은 숫자가 아닌 문자열을 반환합니다. 당신이 SUM/AVG에 어떻게 희망 하는가? 단지 SUM 및 AVG 자체의 등급 열을 AVG하십시오.
가 지금이 주어진, 당신이 할 수 있습니다 :
SELECT
pid,
GROUP_CONCAT(rating) AS rating_total,
SUM(rating) as rating_sum,
AVG(rating) as rating_avg
FROM
rating
GROUP BY
pid
이것은 당신이 찾고있는 무엇을 얻어야한다.
GROUP_CONCAT는 선택한 모든 값을 연결하는 문자열을 반환합니다. 그런 다음, 그 문자열을 합산하려고 시도하고 나서 합계의 평균을 얻으려고합니다.
연결 결과가 아닌 테이블의 값에 SUM 및 AVG를 사용해야한다고 생각합니다.
downvoted 사람들은 이유를 설명하기 위해 의견을 남길 수 있습니까? – Eric
내 downvote가 아니었지만 GROUP BY 쿼리의 * 일 수 있습니다. – Andomar
잘자요. 나는 그것에 대해 생각하지 않고 OP의 행을 맹목적으로 복사했습니다. 머리가 바뀌어서 고마워. – Eric