2012-10-11 64 views
0

我有一個表名作爲JOB_Details和數據顯示如下:SQL count語句

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 

我該怎麼辦呢?因爲當使用計數和按功能分組時,結果結果將不是我想要的。有人能介意給我一些建議嗎?爲了您的信息,我使用Oracle。

+1

SQL Server不是mysql不是oracle。停止分散並選擇一個。 – podiluska

+0

現在我不確定你在用什麼。是SQL Server(微軟),MySQL還是Oracle? – Mat

+0

@Mat是oracle的一個 – goh6319

回答

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 
+0

+1,但最後一行'Total 15 10 25 ' –

+0

因爲需要總計爲總計。 – goh6319

+0

@darren讓我說沒有給男性和女性工作者的數量?你會介意我怎麼做嗎?因爲我通過使用如下代碼來計算: – goh6319

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; 
+0

讓我們說沒有給男性和女性工人的數量?你會介意我怎麼做嗎?因爲我通過使用如下代碼來計數: SELECT(CASE WHEN = '30'那麼計數(EMPLID)WHEN (EMPLID)年齡= '39'那麼計數(EMPLID)當age = '39'那麼計數(EMPLID)當age = '49'那麼計數(EMPLID)當age = '54'時那麼Count(EMPLID)ELSE NULL END)TOTAL_COLUMN,( CASE WHEN GENDER1 ='M'THEN然後計數(EMPLID)當GENDER1 ='F'THEN計數(EMPLID)ELSE NULL END)TOTAL_GENDER FROM job_details GROUP BY年齡,性別 – goh6319

+0

這完全是另一個問題,您必須提出新問題,查詢。 – Parado

+0

感謝您的建議,我將創建一個新問題。(^^) – goh6319