Группировать и суммировать по нескольким идентификаторам

Мой мозг застрял на следующей проблеме.
Это для отчета Bi Publisher
Пользователи могут выбрать одно или несколько имен сотрудников из раскрывающегося списка с несколькими вариантами выбора, например, Джон, Питер, Энн ...
В таблице Emp у нас есть:

emp_id | emp_name   
--- 
1     |  John  
2     |  Peter  
3     |  Ann 

Рабочий лимит стола

emp_id |  limit |  from_date  |  to_date  
---
1    |     35  |    04-jul-2016 |  08-jul-2016  
1    |     15  |    11-jul-2016 |  15-jul-2016  
2    |     40  |    04-jul-2016 |  08-jul-2016  
2    |     20  |    01-aug-2016 |  05-aug-2016  
3    |     27  |    04-jul-2016 |  08-jul-2016

Итак, результат, который я хочу, - это общая сумма (лимит) для выбранного сотрудника.

например, Джон + Энн 77
Или Джон + Энн + Петр = 137
Это только первый шаг. Мне также нужно суммировать значения сома из третьей таблицы, и мне нужно выбрать диапазон дат, и он должен быть сгруппирован по неделям или месяцам, чтобы сделать гистограмму.

Может кто-нибудь из вас, умников, указать мне правильное направление?


person Idar Klubbenes    schedule 16.11.2016    source источник


Ответы (1)


Попробуй это:

SELECT SUM(A.limit) FROM 
( 
    SELECT SUM(limit) limit,emp_name
    FROM worklimit
    JOIN Emp ON Emp.emp_id = worklimit.emp_id
    GROUP BY emp_name 
) A
WHERE emp_name IN ('John','Peter','Ann')
person Mansoor    schedule 16.11.2016
comment
В этой базе данных пользователи ничего не знают о emp_id. Это просто внутренний идентификатор базы данных. Итак, где должно быть emp_name в (Джон, Питер, Энн) - person Idar Klubbenes; 16.11.2016
comment
Большой. Спасибо. Теперь мне нужно добавить другие варианты и группы и посмотреть, как далеко я продвинусь, прежде чем снова застряну. - person Idar Klubbenes; 16.11.2016
comment
@IdarKlubbenes То, что вы сказали о выборе пользователем имен, совершенно неверно. Пользователю не нужно знать об идентификаторе, но приложение, в котором он может выбрать одного или нескольких сотрудников, ДОЛЖНО знать об идентификаторах. Вы можете легко иметь двух сотрудников по имени Энн, и пользователь должен иметь возможность выбирать между ними. (Если это не идентификатор, то это должен быть другой столбец или комбинация столбцов, которые УНИКАЛЬНО идентифицируют сотрудника - например, имя, отдел и дата рождения или что-то подобное). - person mathguy; 16.11.2016
comment
Чтобы немного пояснить. Я использовал emp_name просто в качестве примера. На самом деле они выбирают из списка уникальных идентификаторов ресурсов, но в базе данных таблицы объединяются скрытыми идентификаторами объектов, которые никогда не видны конечному пользователю. - person Idar Klubbenes; 16.11.2016
comment
Я просто пытаюсь разобраться с объединениями, группами и т. д. Нелегко понять общую картину в начале. Надеюсь, когда-нибудь я увижу свет. - person Idar Klubbenes; 16.11.2016
comment
Я еще не вижу света. Как сгруппировать суммы по месяцам. Я знаю, что могу использовать trunc(startdate,'MM'), но могу ли я комбинировать его с остальными? - person Idar Klubbenes; 21.11.2016