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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2019, 20:55   #1
fuzo
Пользователь
 
Регистрация: 16.09.2010
Сообщений: 40
Лампочка Запрос в MySQL с AVG функцией

Всем привет.
Столкнулся с проблемой при выполнении задачи:
Показать все предметы(sname) и преподавателей(tname), которые их преподают, и среднюю зарплату каждого преподавателя по университетам (LEFT JOINS, групповая функция AVG). 1 sql-команда.

Исходная база данных имеет следующий вид: http://prntscr.com/nzm2pu

Собственно запрос построенный на левых джоинах: http://prntscr.com/nzm29y

Как только добавляю функцию avg без условий происходит такое: http://prntscr.com/nzm3cg

И наконец единственный вариант к которому я созрел это добавить GROUP BY: http://prntscr.com/nzm4er
при этом AVG вроде бы как и подсчитывает, но обрезает пердметы и учителей, что как бы не по условию. К сожалению с гуглом разобраться не получилось.

Код:
select sname, tname, avg(wage)
from ((SUBJECT LEFT JOIN TEACHER ON subject.id_subject=teacher.id_subject)
 LEFT JOIN uniteacher ON uniteacher.id_teacher=teacher.id_teacher)
 GROUP BY uniteacher.id_university;
fuzo вне форума Ответить с цитированием
Старый 10.06.2019, 09:09   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
select qpredmet....,  qage....
from ( --  все предметы(sname) и преподавателей(tname), которые их преподают, 
       select id_teacher, ... 
      ) qpredmet
left join (  и среднюю зарплату каждого преподавателя по университетам
            select avg(wage) sage, id_teacher
            ...
            group by id_teacher
         ) qage on qage.id_teacher =qpredmet.id_teacher
Цитата:
(LEFT JOINS, групповая функция AVG).
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 12.06.2019, 06:55   #3
fuzo
Пользователь
 
Регистрация: 16.09.2010
Сообщений: 40
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
select qpredmet....,  qage....
from ( --  все предметы(sname) и преподавателей(tname), которые их преподают, 
       select id_teacher, ... 
      ) qpredmet
left join (  и среднюю зарплату каждого преподавателя по университетам
            select avg(wage) sage, id_teacher
            ...
            group by id_teacher
         ) qage on qage.id_teacher =qpredmet.id_teacher
Общий смысл улавливаю но не получается сложить все воедино с вашими сокращениями)

Вот что получается: http://prntscr.com/o0qllv

Код:
select sname, tname, Awage
from (select sname, tname from subject
LEFT JOIN teacher ON subject.id_subject=teacher.id_subject) X
LEFT JOIN (select avg(wage) Awage, id_university from uniteacher GROUP BY id_university) Y
ON teacher.id_teacher=uniteacher.id_teacher;
sname - Имена предмета из таблицы SUBJECT
tname - Имена преподавательей из таблицы TEACHER
id_university - ключ универа в таблице UNITEACHER
wage - зарплата преподавателя

Последний раз редактировалось fuzo; 12.06.2019 в 08:04.
fuzo вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос в MySQL Rose16 SQL, базы данных 0 27.05.2017 22:02
MySql запрос Yulkaaa Помощь студентам 2 28.09.2011 15:24
Запрос mysql nitrofox PHP 1 27.08.2011 09:58
Запрос с функцией (с вычислемым полем) в Access постоянно обрабат, При слиянии с Word тормоза в 10раз > doslidnik Microsoft Office Access 3 15.12.2010 21:20
MySQL запрос в PHP Ensoph PHP 2 07.11.2010 16:19