Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2016, 20:12   #1
kos56
 
Регистрация: 13.09.2016
Сообщений: 3
По умолчанию sql запрос средняя сумма

Помогите пожалуйста написать sql запрос вывести по каждому работнику среднею сумму по всем заказам.
Пример:
Первая табличка
ID_работника, Фамилия
1 Иванов
2 Петров
3 Соколов
4 Сидоров

Вторая табличка
номер_заказа, ID_работника, date_time, Сумма
1 2 2016-09-13 17:06:43.617 10
2 2 2016-09-13 17:06:43.617 20
3 4 2016-09-13 17:06:43.617 25
kos56 вне форума Ответить с цитированием
Старый 14.09.2016, 05:06   #2
predefined
Форумчанин
 
Регистрация: 01.08.2016
Сообщений: 182
По умолчанию

Код:
SELECT w.`Фамилия`, AVG(z.`Сумма`) AS average
FROM 'Первая табличка' AS w
LEFT JOIN 'Вторая табличка' AS z ON w.`ID_работника`=z.`ID_работника`
GROUP BY z.`ID_работника`
В `...` ваши реальные названия полей таблиц.

Последний раз редактировалось predefined; 14.09.2016 в 05:09.
predefined вне форума Ответить с цитированием
Старый 14.09.2016, 09:38   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

я сторонник классического SQL. а по стандарту нельзя использовать поле в Select, которое не указано в группировке по GROUP BY

поэтому:
Код:
SELECT w.Фамилия, AVG(z.Сумма) AS average
FROM Table1 AS w
LEFT JOIN Table2 AS z ON w.ID_работника=z.ID_работника
GROUP BY w.Фамилия, z.ID_работника
order by добавить по вкусу...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.09.2016, 23:14   #4
predefined
Форумчанин
 
Регистрация: 01.08.2016
Сообщений: 182
По умолчанию

Serge_Bliznykov, а если вдруг попадётся парочка "Иванов Иван Ивановичей"? ID записей у них, естественно, будут разные, а ФИО - совпадут.
predefined вне форума Ответить с цитированием
Старый 14.09.2016, 23:34   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

predefined, и что? у меня присутствует группировка по z.ID_работника
Поэтому и ваш код и мой выдадут одинаковый результат
Иванов Иван Иванович xxx
Иванов Иван Иванович yyyy

разница только в том, что ваш код отработает только в MySQL (и ему подобных СУБД, где нет строго следования стандартам) и не отработает, например, в MS SQL, Oracle и прочих, более строгих.
А мой код должен работать везде.

Вот и вся разница.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.09.2016, 14:29   #6
predefined
Форумчанин
 
Регистрация: 01.08.2016
Сообщений: 182
По умолчанию

Да, померещилось. Я полагал, что надо поменять местами w.Фамилия и z.ID_работника
predefined вне форума Ответить с цитированием
Старый 15.09.2016, 15:34   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

predefined, ничего страшного, бывает!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос в sql 2005 - SQL Server a.n.o.n.i.m SQL, базы данных 8 31.03.2016 17:01
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
Запрос на выборку + сумма EugeneIsmatulin SQL, базы данных 3 16.06.2009 15:08
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15