Q&A

  • 데이타 갯수 구하기 sql문에 이상이 생겼어요~~
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(*)가 왜곡되는 현상이 보입니다..

어떻게 해결을 해야 할까요..

아시는 분은 좀 도와주세용..^^

그럼.행복한 하루되시구여..



4  COMMENTS
  • Profile
    mafioso 2001.10.11 04:30
    테스트는 못해봤지만 참고하시길...



    >> 방법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(*)가 왜곡되는 현상이 보입니다..

    > 어떻게 해결을 해야 할까요..

    > 아시는 분은 좀 도와주세용..^^

    > 그럼.행복한 하루되시구여..

    >

  • Profile
    난관봉착자 2001.10.11 23:14
    이제 어떻게 해야 하는 건지 감이 오는군요..

    (사실 주신 답이 다 이용될 거 같지만요.^^)

    감사드리구요..



    죄송하지만 제가 실행해본 결과 아래와 같은 에러가 있거든요..

    혹시 아시나 해서요.^^

    invalid use of keyword

    token : Select

    line number :2



    이라는 에러가 계속 나거든요..

    from 안의 두 개 테이블 각각은 에러가 발생하지 않고 제대로 값이 나오는데..

    혹시 이거에 대한 이유도 아시나요..^^

    알면 좀 알려주시구요.

    참 전 지금 오라클을 못쓰구 파라독스를 쓰고 있답니다..

    결국에는 오라클로 다시 코딩을 코쳐야 하지만요..

    그럼 좋은 하루되시구요..







    mafioso wrote:

    > 테스트는 못해봤지만 참고하시길...

    >

    > >> 방법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(*)가 왜곡되는 현상이 보입니다..

    > > 어떻게 해결을 해야 할까요..

    > > 아시는 분은 좀 도와주세용..^^

    > > 그럼.행복한 하루되시구여..

    > >

  • Profile
    mafioso 2001.10.12 18:54
    조금이나마 도움이 되었다면 저두 기쁩니다.

    에러내용을 보니

    paradox에서는 inline-view가 지원되지 않는 모양입니다.

    하지만 Oracle에서는 될 겁니다.

    (혹 다른 에러가 있을진 모르겠지만...)



    난관봉착자 wrote:

    > 이제 어떻게 해야 하는 건지 감이 오는군요..

    > (사실 주신 답이 다 이용될 거 같지만요.^^)

    > 감사드리구요..

    >

    > 죄송하지만 제가 실행해본 결과 아래와 같은 에러가 있거든요..

    > 혹시 아시나 해서요.^^

    > invalid use of keyword

    > token : Select

    > line number :2

    >

    > 이라는 에러가 계속 나거든요..

    > from 안의 두 개 테이블 각각은 에러가 발생하지 않고 제대로 값이 나오는데..

    > 혹시 이거에 대한 이유도 아시나요..^^

    > 알면 좀 알려주시구요.

    > 참 전 지금 오라클을 못쓰구 파라독스를 쓰고 있답니다..

    > 결국에는 오라클로 다시 코딩을 코쳐야 하지만요..

    > 그럼 좋은 하루되시구요..

    >

    >

    >

    > mafioso wrote:

    > > 테스트는 못해봤지만 참고하시길...

    > >

    > > >> 방법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(*)가 왜곡되는 현상이 보입니다..

    > > > 어떻게 해결을 해야 할까요..

    > > > 아시는 분은 좀 도와주세용..^^

    > > > 그럼.행복한 하루되시구여..

    > > >

  • Profile
    난관봉착자 2001.10.13 00:11
    흑흑 계속되는 답변에 감사의 눈물을 질질 쌉니다..

    오라클로 나중에 다시 해봐야 해야겠네요..

    고맙습니다..

    좋은 주말 되시길..^^



    mafioso wrote:

    > 조금이나마 도움이 되었다면 저두 기쁩니다.

    > 에러내용을 보니

    > paradox에서는 inline-view가 지원되지 않는 모양입니다.

    > 하지만 Oracle에서는 될 겁니다.

    > (혹 다른 에러가 있을진 모르겠지만...)

    >

    > 난관봉착자 wrote:

    > > 이제 어떻게 해야 하는 건지 감이 오는군요..

    > > (사실 주신 답이 다 이용될 거 같지만요.^^)

    > > 감사드리구요..

    > >

    > > 죄송하지만 제가 실행해본 결과 아래와 같은 에러가 있거든요..

    > > 혹시 아시나 해서요.^^

    > > invalid use of keyword

    > > token : Select

    > > line number :2

    > >

    > > 이라는 에러가 계속 나거든요..

    > > from 안의 두 개 테이블 각각은 에러가 발생하지 않고 제대로 값이 나오는데..

    > > 혹시 이거에 대한 이유도 아시나요..^^

    > > 알면 좀 알려주시구요.

    > > 참 전 지금 오라클을 못쓰구 파라독스를 쓰고 있답니다..

    > > 결국에는 오라클로 다시 코딩을 코쳐야 하지만요..

    > > 그럼 좋은 하루되시구요..

    > >

    > >

    > >

    > > mafioso wrote:

    > > > 테스트는 못해봤지만 참고하시길...

    > > >

    > > > >> 방법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(*)가 왜곡되는 현상이 보입니다..

    > > > > 어떻게 해결을 해야 할까요..

    > > > > 아시는 분은 좀 도와주세용..^^

    > > > > 그럼.행복한 하루되시구여..

    > > > >