2013-12-12 3 views
0

weight라는 열을 만들어야합니다.이 열은 노래 재생의 총 횟수에 고유 한 노래 재생 횟수를 곱하여 계산됩니다.두 개의 다른 열을 기반으로 열을 계산하려면 어떻게합니까?

SELECT music_id, 
COUNT(*) as count, 
COUNT(distinct user_id) as unique_count, 
count * unique_count as weight 

FROM plays GROUP BY music_id ORDER BY weight DESC LIMIT 50 

내가 오류 "필드 목록에서 알 수없는 열 '개수'"점점 계속하지만, 기능 대신 일반 수를 기준으로 정렬 나는 "가중치로 계산 + unique_count"를 제거 할 때 작동 : 여기에 내가 무엇을 가지고 .

답변

1

시도해 볼 수 있습니까?

SELECT music_id, 
COUNT(*) as cnt, 
COUNT(distinct user_id) as unique_count, 
COUNT(*) * COUNT(distinct user_id) as weight 
FROM plays 
GROUP BY music_id 
ORDER BY weight DESC LIMIT 50 

또는

SELECT music_id, cnt * unique_count AS weight 
FROM (
    SELECT music_id, 
    COUNT(*) as cnt, 
    COUNT(distinct user_id) as unique_count 
    FROM plays GROUP BY music_id 
) AS tab 
ORDER BY weight DESC LIMIT 50 

ALIAS 에드 열 이름이 같은 수준에서 참조 할 수 없었다. 예 :

mysql> select name AS alias1, alias1 * 10 from test; 
ERROR 1054 (42S22): Unknown column 'alias1' in 'field list' 
mysql> select name AS alias1 from test where alias = '10'; 
ERROR 1054 (42S22): Unknown column 'alias' in 'where clause' 
+0

작동하지 않았습니다. 이제 "모든 파생 테이블에 고유 한 별칭이 있어야합니다."라는 오류 메시지가 나타납니다. – Kyle

+0

@Kyle Oops. 죄송합니다. 나는 갱신했다. –

+0

이제 작동합니다! 정말 고마워! – Kyle

관련 문제