#mysql #mysql-workbench
#mysql #mysql-workbench
Вопрос:
Общая сумма часов для соответствующей программы из таблицы 1 должна умножаться на prod_count в таблице 2.
Например: давайте возьмем пользовательскую оперативную память
оперативная память работала над двумя программами pro-1 = 9hr (5 4)
и pro-2 = 6 hr
[из таблицы 1]
prod_count для pro-1 is 200
и pro-2 is 120
[из таблицы 2]
поэтому в идеале это должно быть 200*9 = 1800
и 120*6 = 720
итак total is (1800 720) = 2520
total task count is (656 23 44) = 723
[из таблицы 1]
Результат для оперативной памяти должен быть ram, 2520 , 723
Таблица 1
| id | name | program | task_hours | task_count |
|----|-------|---------|------------|------------|
| 1 | raj | pro-1 | 6.5 | 344 |
| 2 | raj | pro-2 | 2 | 324 |
| 3 | ram | pro-1 | 5 | 656 |
| 4 | ram | pro-1 | 4 | 23 |
| 5 | ram | pro-2 | 6 | 44 |
| 6 | kumar | pro-2 | 7 | 345 |
| 7 | kumar | pro-3 | 4 | 222 |
Таблица 2
| id | program | prod_count |
|----|---------|------------|
| 1 | pro-1 | 200 |
| 2 | pro-2 | 120 |
| 3 | pro-3 | 60 |
Ожидаемый результат :
name | total_calc | total_count |
|-------|------------|-------------|
| raj | 1540 | 668 |
| ram | 2520 | 723 |
| kumar | 1080 | 567 |
SQL Fiddle —http://sqlfiddle.com /#!9/f75e15
Ответ №1:
Объединяйте таблицы и агрегируйте:
select t1.name,
sum(t1.task_hours * t2.prod_count) total_calc,
sum(t1.task_count) total_count
from Table1 t1 inner join Table2 t2
on t2.program = t1.program
group by t1.name
Посмотрите демо версию.
Результаты:
| name | total_calc | total_count |
| ----- | ---------- | ----------- |
| kumar | 1080 | 567 |
| raj | 1540 | 668 |
| ram | 2520 | 723 |
Ответ №2:
Попробуйте это:http://sqlfiddle.com /#!9/eb5f61/1/0
select
name,
sum(task_hours * prod_count) total_calc,
sum(task_count) total_count
from table1 t1
join table2 t2
on t1.program = t2.program
group by name
order by t1.id
Отмечено: task_hours должен иметь тип float.