select count(*) from election
where gain IN (SELECT Max(gain) FROM election group by Small_District) and Big_District = '00'
group by party
프로그램을 만들다가 어려운 난관에 봉착했습니다..
고수님들이 도와주셨으면 좋겠는데요..
문제에 대한 설명을 하기 위해 먼저 예를 하나 들겠습니다..
서울이라는 지역의 선거구가 10개가 있다고 치고, 당이 3개가 있다고 가정해봅니다. 이 때 서울 10개 지역에서 a당이 선두인 지역은 x개, b당이 선두인 지역은 y개...이런 식으로 데이타를 표현하고자 합니다.
근데 문제가 되는 게 제1선거구의 max(gain)=500이고 제2선거구의 max가 아닌 득표수가 ,즉 득표수가 2등이나 3등이라고 보면, 500이 되버리면 최종 결과가 1선거구의 max, 2선구의 max, 2선거구의 500득표...이런식으로 원치 않는 데이타가 추가가 되는데요..
그래서 count(*)가 왜곡되는 현상이 보입니다..
어떻게 해결을 해야 할까요..
아시는 분은 좀 도와주세용..^^
그럼.행복한 하루되시구여..
>> 방법1
select party, count(*)
from (select distinct party, small_distric, gain
from election
where big_district = '00') a,
(select small_district, max(gain) max_gain
from election
where big_district = '00'
group by small_district) b
where a.small_district = b.small_district
and a.gain = b.max_gain
group by party
>> 방법2
select party, count(*)
from election a
where big_district = '00'
and gain = (select max(gain)
from election
where big_district = a.big_district
and small_district = b.small_district)
group by party
난관봉착자 wrote:
> select count(*) from election
> where gain IN (SELECT Max(gain) FROM election group by Small_District) and Big_District = '00'
> group by party
>
> 프로그램을 만들다가 어려운 난관에 봉착했습니다..
> 고수님들이 도와주셨으면 좋겠는데요..
> 문제에 대한 설명을 하기 위해 먼저 예를 하나 들겠습니다..
> 서울이라는 지역의 선거구가 10개가 있다고 치고, 당이 3개가 있다고 가정해봅니다. 이 때 서울 10개 지역에서 a당이 선두인 지역은 x개, b당이 선두인 지역은 y개...이런 식으로 데이타를 표현하고자 합니다.
> 근데 문제가 되는 게 제1선거구의 max(gain)=500이고 제2선거구의 max가 아닌 득표수가 ,즉 득표수가 2등이나 3등이라고 보면, 500이 되버리면 최종 결과가 1선거구의 max, 2선구의 max, 2선거구의 500득표...이런식으로 원치 않는 데이타가 추가가 되는데요..
> 그래서 count(*)가 왜곡되는 현상이 보입니다..
> 어떻게 해결을 해야 할까요..
> 아시는 분은 좀 도와주세용..^^
> 그럼.행복한 하루되시구여..
>