2012-10-11 62 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