2017-12-21 19 views
2

의 처음 3 개 요소를 가져옵니다 나는이 함께 왔어요 :여기 <a href="http://www.semwebtech.org/sqlfrontend/" rel="nofollow noreferrer">http://www.semwebtech.org/sqlfrontend/</a></p> <hr> <p>나는 대부분의 대륙에 praticed하는 3 종교를 얻기 위해 노력하고 있어요을 조회 할 수있는 몬 디알 데이터베이스를 사용하고 속성의 각 값에 SQL

select religion.name, sum(religion.percentage) as total, continent from religion join encompasses on religion.country = encompasses.country group by name, continent order by continent, total DESC

이 자신의 인기도 순으로 정렬 각 대륙에 나에게 각 종교의 목록을 제공하지만 어떻게 내가 대륙의 처음 3 개 결과를 얻을 수 있습니까?

나는 커서를 보았다하지만 내 경우에 적용하는 방법을 참조하지 않고 간단한 응답이 것 같습니다

답변

0
나는 창 기능을 사용하는 것이

:

select rc.* 
from (select r.name, sum(r.percentage) as total, e.continent, 
      row_number() over (partition by e.continent order by sum(r.percentage) as total desc) as seqnum 
     from religion r join 
      encompasses e 
      on r.country = e.country 
     group by r.name, e.continent 
    ) rc 
where seqnum <= 3; 

설명 데를 질문에 대답하기 위해 쿼리를 수정하는 방법, 이제는 쿼리가 잘못되었음을 지적하겠습니다. 사람 비율의 합계는 전체 사람 수와 같지 않습니다. 예를 들어, 부탄은 100 % 불교도 (불교는 국가 종교)에 가깝다고 생각합니다. 그러나 인도에 불교도가 더 많다 (한 소식통에 따르면 불교도가 약 0.7 %).

+0

예 각국의 인구를 고려하지 않았지만 급격한 차이가 출력되지는 않겠지 만 잘못된 것일 수 있습니다. – KerDam