sql - postgresql 聚合的聚合(sum of sum)

标签 sql postgresql select join aggregate-functions

我的员工有很多销售业绩并且属于各个部门。我想了解一个部门每天的销售额是多少。

为简单起见,假设一名工作人员只属于一个部门。

示例:

部门:

| id | name            |
| 1  | Men's Fashion   |
| 2  | Women's Fashion |

worker :

| id  | name   |
| 1   | Timmy  |
| 2   | Sally  |
| 3   | Johnny |

销售:

| id  |  worker_id | datetime          | amount |
| 1   |  1         | 2013-1-1 08:00:00 |  1     |
| 2   |  1         | 2013-1-1 09:00:00 |  3     |
| 3   |  3         | 2013-1-2 08:00:00 |  8     |

部门员工

| id | worker_id | department_id |
| 1  |   1       |    1          |
| 2  |   2       |    1          |
| 3  |   3       |    2          |

我想得到

|  department     | amount |
| Men's Fashion   | 4      |
| Women's Fashion | 8      |

要获取单个 worker 的总销售额,我可以这样做

SELECT worker_id, SUM(amount) FROM sales
GROUP BY worker_id

如何获取这些金额(每个 worker 的销售总额)并按部门汇总?

最佳答案

不要对总和进行求和,而是通过 Department_employees 表从 sales 加入到部门:

select d.name, sum(s.amount)
from sales s
join department_employees de on de.worker_id = s.worker_id
join departments d on d.id = de.department_id
group by d.name

关于sql - postgresql 聚合的聚合(sum of sum),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17551385/

相关文章:

sql - DataReader.GetString() 通过列名

Java:如何将 Hibernate 命名 SQL 查询(在 XML 文件中)的结果映射到带注释的实体

postgresql - env 未定义错误 - Ubuntu 14.04.3 LTS & julia 0.3 & ODBC 0.3.1

jquery - 创建 jquery 数组用作选项

MySQL 选择具有公共(public)列的行

c - 仅对套接字上的新数据使用 poll() 超时

sql - 索引所有列

sql - EXEC sp_executesql - 从存储过程调用中捕获 RETURN 值和 OUTPUT 值

json - PostgreSQL 9.5 - 将 NULL 与 JSON 合并时更新不起作用

sql - 如何解锁 Postgres 中的行