2017-01-31 2 views
1

여러 학구의 학교에 대한 지표 표 (예 : 학생 수)가 있습니다.테이블과 집계 된 결과를 SQL에 결합하는 방법

나는 지구가 그 지표를 집계해야하고, 내 초기 테이블의 맨 아래에 그 집계를 대조하고 싶습니다 :

내가 가진 :

district school students 
District1 School1 10 
District2 School2 20 
District1 School3 30 
District2 School4 40 
District1 School5 50 
District2 School6 60 

나는 결국에 좀하고 싶습니다 같은 테이블 : 나는 시도

district school students 
District1 School1 10 
District2 School2 20 
District1 School3 30 
District2 School4 40 
District1 School5 50 
District2 School6 60 
District1 Total 90 
District2 Total 120 

,231,457,299,321 0

하지만 실제로는 여러 가지 쿼리에서 많은 지표를 가져오고 두 가지 추가 수준 (주 및 국가)에서 집계하므로 매우 느립니다. 이 작업을 수행하는 가장 효율적인 방법이 있습니까? 당신은 SQL-Server를 사용하는 경우

+1

어느 RDBMS입니까? Microsoft SQL Server? MySQL은? 신탁? –

+1

동일한 테이블이나 쿼리에 합계가있는 것은 의미가 없습니다. 당신이 정말로 원하는 것을 다시 생각해보십시오. 그것에 대해 생각하십시오 : "학교"란에 "합계"를 갖는 것이 합리적입니까? –

+1

@ NazarMerza 반드시 나쁜 생각은 아닙니다. 그것은 기본적으로 ROLLUP이하는 것입니다 ... – Jerrad

답변

1

당신은 ROLLUP 사용할 수 있습니다

SAMPLE 자료 :

CREATE TABLE #enrolment(district VARCHAR(25) 
        , school VARCHAR(25) 
        , students INT); 

INSERT INTO #enrolment 
VALUES 
     ('District1' 
    , 'School1' 
    , 10), 
     ('District2' 
    , 'School2' 
    , 20), 
     ('District1' 
    , 'School3' 
    , 30), 
     ('District2' 
    , 'School4' 
    , 40), 
     ('District1' 
    , 'School5' 
    , 50), 
     ('District2' 
    , 'School6' 
    , 60); 

QUERY :

SELECT district 
    , ISNULL(school, 'Total') AS school 
    , SUM(students) AS students 
FROM #enrolment 
GROUP BY ROLLUP(district, school); 

결과 :

enter image description here

+0

잘 됐어.하지만 지금은 Access에서 일하고있어. – reluck

관련 문제