0

JOB_Details というテーブル名があり、データは次のように表示されます。

Age           Department:IT         
              Male     Female 
30yrs         5          1              
30-34yrs      3          2              
35-39yrs      4          4              
40-49yrs      2          3              
50-54yrs      1          0              

出力は次のようになります。

Age           Department:IT          Total
              Male     Female 
30yrs         5          1              6
30-34yrs      3          2              5
35-39yrs      4          4              8
40-49yrs      2          3              5
50-54yrs      1          0              1
Total         15         10             25

どうすればいいですか?count と group by 関数を使用すると、結果の結果が私が望むものとは正確に異なるためです。誰かが私に何か提案をしてくれませんか?ご参考までに、私はOracleを使用しています。

4

2 に答える 2

2
SELECT AGE, MALE, FEMALE, SUM(MALE + FEMALE) AS TOTAL
FROM JOB_DETAILS
GROUP BY AGE

編集:

現在の合計が必要な場合は、使用する必要がありますROLLUP(SQL Server)

SELECT AGE, MALE, FEMALE, SUM(MALE + FEMALE) AS TOTAL
FROM JOB_DETAILS
GROUP BY AGE
WITH ROLLUP 
于 2012-10-11T08:37:52.310 に答える
0

union all次のように使用してみてください。

SELECT age, Male, Female, nvl(Male,0) + nvl(Female,0) as total
FROM JOB_Details 
union all
SELECT 'TOTAL', sum(Male), sum(Female), sum(nvl(Male,0) + nvl(Female,0))
FROM JOB_Details 

ビュー付き:

create view vJOB_Details 
SELECT (CASE WHEN age='30' THEN Count(EMPLID) 
             WHEN age='34' THEN Count(EMPLID) 
             WHEN age='39' THEN Count(EMPLID) 
             WHEN age='49' THEN Count(EMPLID) 
             WHEN age='54' THEN Count(EMPLID) 
             ELSE NULL 
        END) TOTAL_COLUMN ,
        (CASE WHEN GENDER1='M' THEN Count(EMPLID) 
              WHEN GENDER1='F' THEN Count(EMPLID) 
              ELSE NULL 
         END) TOTAL_GENDER 
FROM job_details 
GROUP BY age,GENDER 

SELECT age, Male, Female, nvl(Male,0) + nvl(Female,0) as total
FROM vJOB_Details 
union all
SELECT 'TOTAL', sum(Male), sum(Female), sum(nvl(Male,0) + nvl(Female,0))
FROM vJOB_Details; 
于 2012-10-11T08:41:15.467 に答える