2013-07-09 3 views
2

많은 판매가 있고 부서에 속한 근로자가 있습니다. 한 부서에서 하루에 얼마나 많은 매출을 올리고 있는지보고 싶습니다.postgresql 집계 총계 (합계)

간단히 말하면 작업자가 하나의 부서에만 속한다고 가정 해 보겠습니다.

예 :

부서 :

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

근로자 :

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

department_employees

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

내가 그 금액을 어떻게 내가

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

을 할 수

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

개별 노동자의 총 매출을 얻으려면 좀하고 싶습니다 (근로자 당 판매 총량) 부서별로 집계 하시겠습니까?

+0

왜'department_employees' 테이블이 :

뭔가를 시도? 'workers' 테이블에'department_id' 컬럼이 없어야합니까? – Bohemian

+0

@ 보헤미안 - 질문을 표현하는 방식에 맞습니다. 실제 데이터베이스에서 직원은 여러 부서에 속할 수 있습니다. 여러 부서에 속한 경우 어떤 부서에서 신용을 얻었는지에 대해 걱정할 필요가 없었습니다. 일반적인 대답에 대해 더 궁금해했습니다. 그래도 캐치 주셔서 감사합니다! –

답변

3

오히려 부서에 department_employees 테이블을 통해 판매에서 가입 합계 합계하지 마십시오 작업에 의해

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

완벽한, 감사합니다! 또한, 방금 호주에서 돌아 왔고, 동물 공원에서 두 개의 웜뱃을 보았습니다. 내가 본 프로필 사진을 가장 잘 사용합니다. –

1

집계 함수와 그룹을 조인트 성명에서 너무.

SELECT name, SUM(amount) FROM departments, department_employees, sales 
WHERE departments.id = department_employees.department_id 
AND sales.worker_id = department_employees.worker_id 
GROUP BY name