2011-03-18 3 views
1

나는 쿼리를 머리에 쓰려고 애를 쓰고있다. 나는 기본적인 SQL을 수행하는 방법을 알고 있지만 이것으로 내 깊이에서 조금 벗어난다.여러 테이블에서 데이터를 가져 오는 SQL 쿼리와 기본 계산을 더하기

나는 최고 순위의 게임 차트를 반환하는 쿼리를 설정하려고합니다. 사용자는 10 점 만점에 게임 순위를 매길 수 있습니다. 상위 10 점의 게임 목록을 선택하고 평균 순위가 무엇인지에 따라 차트에 표시하고 그들이 갖고있는 투표 수로도 표시하려고합니다. 평균 순위가 8 표 및 20 표인 게임이 10 표를 얻고 평균 순위가 8 인 게임보다 차트 위로 올라갈 것입니다.

순수한 SQL로 수행 할 수 없다면 언제나 가능합니다. 나머지 부분을 코딩해라. 이 단계에서 필자가 필요로하는 데이터를 얻고 올바른 형식으로 제공합니다.

도움을 주시면 감사하겠습니다.

| id | title | platform | genre | 

사용자

| id | email | username | password | 

투표

게임 : 다음과 같이

내 테이블 구조는 0

| userid | gameid | vote | 

I 반환 할 데이터의 형식은 다음과 같습니다

| title | platform | average rank | votes | 

감사합니다.

답변

3
게임에

당신 수 group by, 나머지는 아주 간단는 :

select games.title 
,  games.platform 
,  games.genre 
,  avg(votes.vote) as AvgRank 
,  count(*) as VoteCount 
from games 
join votes 
on  votes.gamesid = games.gameid 
join users 
on  users.id = votes.userid 
group by 
     games.title 
,  games.platform 
,  games.genre 
order by 
     avg(votes.vote) desc 
,  count(*) desc 
limit 10 

이 쿼리는 처음 10 개 행을 얻을 수 limit 10를 사용합니다. SQL Server를 사용하는 경우 select top 10 ...을 사용하십시오. Oracle은 where rownum < 11을 사용합니다.

+0

정말 고마워요. 시간을 절약 해 줬어! :) – jimbo77

관련 문제