0

如何使用具有多个聚合计算点的单个查询获取数据。

我有这样的数据。

部门员工工资活跃
---- --------------- ----------- ---------

D1 E1 1,000 Y
D1 E2 2,000 N
D1 E3 3,000 Y
D1 E4 4,000 Y
D2 E6 5,000 Y
D2 E7 1,000 N
D2 E8 3,000 N
D3 E9 4,000 Y

我想在一个查询中输出这样的东西。

DEPT TOT_ACTIVE_EMP TOT_INACTIVE_EMP TOT_ACTIVE_SAL TOT_INACTIVE_SAL
----- ------------- --------------- ----------- ------------ --------------- -----------
D1 3 1 8,000 2,000
D2 1 2 5,000 4,000
D3 1 0 4,000 0

4

3 回答 3

2

你可以做类似的事情

SELECT dept,
       SUM( CASE WHEN active='Y' THEN 1 ELSE 0 END) tot_active_emp,
       SUM( CASE WHEN active='N' THEN 1 ELSE 0 END) tot_inactive_emp,
       SUM( CASE WHEN active='Y' THEN salary ELSE 0 END) tot_active_sal,
       SUM( CASE WHEN active='N' THEN salary ELSE 0 END) tot_inactive_sal
  FROM you_table
 GROUP BY dept
于 2014-06-01T03:38:41.350 回答
0

您可以使用case语句来做到这一点

SELECT 
dept, 
sum(case when active = 'Y' then 1 else 0 end) tot_active_emp,
sum(case when active = 'Y' then salary else 0 end) tot_active_sal
FROM emp_table
GROUP BY dept;

为您需要的其他字段提供类似的案例声明。

于 2014-06-01T03:39:13.260 回答
0

您可以使用一系列 CASE 语句和 SQL 服务器的 COUNT/SUM 函数,即

SELECT
  dept,
  sum(CASE WHEN ACTIVE='Y' THEN 1 ELSE 0 END) AS total_active,
  sum(CASE WHEN ACTIVE='Y' THEN 0 ELSE 1 END) AS total_inactive
GROUP BY
  dept

供读者完成其他列的练习:)

于 2014-06-01T03:39:18.230 回答