Как объединить три стола?Количество и средний SQL - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть три таблицы ниже со следующей информацией

project.analytics 
        | proj_id | list_date  | state  
        |   1     |   03/05/10 |   CA   
        |   2     |   04/05/10 |   WA   
        |   3     |   03/05/10 |   WA   
        |   4     |   04/05/10 |   CA   
        |   5     |   03/05/10 |   WA   
        |   6     |   04/05/10 |   CA   

employees.analytics 
        | employee_id  | proj_id  | worked_date
        |   20         |   1      | 3/12/10    
        |   30         |   1      | 3/11/10         
        |   40         |   2      | 4/15/10     
        |   50         |   3      | 3/16/10     
        |   60         |   3      | 3/17/10     
        |   70         |   4      | 4/18/10   

email.forward 
        | email_id    | event_id  | employee_id
        |   1         |   1          | 20    
        |   2         |   2          | 80        
        |   3         |   3          | 40     
        |   4         |   4          | 50     
        |   5         |   5          | 50     
        |   6         |   6          | 60

Как я могу определить, какие электронные письма (email_id) заставляли сотрудников работать над проектами (количество) по месяцам и состоянию?

Desired output:

   Email_id  |  Month    | state  |# of employee
        1    |   March   |   CA   |   1
        1    |   April   |   WA   |   2
        2    |   July    |   WA   |   2
        2    |   August  |   CA   |   1

Я застрял, потому что не уверен, как маневрировать тремя столами вместе.По сути, я хочу быть в состоянии ответить

Этот email_id заставил так много сотрудников работать над этим проектом в этом месяце и состоянии.

1 Ответ

0 голосов
/ 03 декабря 2018

Примерно так должно работать:

SELECT c.email_id, month(b.worked_date), a.state, count(distinct b.employee_id)
FROM project.analytics a
JOIN employees.analytics b 
ON a.project_id = b.project_id
JOIN email.forward c 
on c.employee_id = b.employee_id
GROUP BY c.email_id, month(b.worked_date)

Я не уверен, какую СУБД вы используете, поэтому MONTH () может существовать или не существовать там, но вы должны быть в состоянии найти аналогичную функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...