다음 쿼리가 있는데 평균 순위가 가장 높은 멤버가 먼저 표시되는 순서로 멤버를 표시하려고합니다. 가장 높은 평가 수를 고려합니다. 회원 B 2 방문자에 의해 평가 및 평균 평가 값이 5AVG 및 COUNT 함수가 SQL 쿼리에서 적절한 결과를 제공하지 않습니다.
입니다 그래서 쿼리 아래, 회원 A는해야에 따라하고있는 동안 3 방문자와 평균 평가 가치에 의해 평가 된 회원 여기
는 5 그는 평균 평점이 5이고 3 인으로 평가되었으므로 먼저 표시하고 B 회원은 두 번째 위치에 표시해야합니다.
하지만 회원 B가 먼저 표시하고 회원 A가 두 번째를 표시하므로 문제가 있습니다. 질문에서 내가 뭘 잘못하고 있는지 알려주세요.
SELECT m.*,mc.*
FROM t_member m
LEFT JOIN tr_member_category mc ON m.memberpkid=mc.memberpkid
LEFT JOIN tr_comment c
ON m.memberpkid=c.memberpkid
AND c.approved='YES' AND c.visible='YES'
WHERE m.visible='YES' AND m.approved='YES'
AND m.gender='FEMALE' AND mc.archivecatpkid=1
GROUP BY m.memberpkid
ORDER BY avg(c.ratingvalue) DESC, COUNT(c.ratingvalue) DESC
는 SELECT 절에, ORDER 절 밖으로 AVG 및 COUNT 기능 KRA에게 사전에 당신에게
회원과 카테고리간에 일대일 관계가 있습니까? 그렇지 않은 경우 결과는 [불확정] (http://dev.mysql.com/doc/refman/5.6/en/group-by-hidden-columns.html)입니다. –
어떤 데이터 유형이 ratingvalue입니까? Int 또는 약간의 변동 가치? A 및 B 등급 값은 무엇입니까? –
rating 값 데이터 유형이 bigint (20) A는 3, 5, 5, 5이므로 평균값은 5입니다. A의 평점은 2와 5이고 평균값은 5이므로 – KRA