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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2019, 02:11   #1
ADITTI
 
Регистрация: 23.02.2019
Сообщений: 4
По умолчанию sql

Необходимо после обьединения таблиц сгруппировать по фамилиям (Surname).
Я делаю так, но не работает последняя строчка группировки
Код:
select
	s.surname
	, s.name
	, isnull(em.count_mark, 0)
	from students s
	 left outer join(
	select student_id, count(mark) count_mark
	from EXAM_MARKS
	group by STUDENT_ID, mark
	having mark >= 3) em on em.student_id = s.id 
	group by s.SURNAME
ADITTI вне форума Ответить с цитированием
Старый 04.03.2019, 08:12   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от ADITTI Посмотреть сообщение
сгруппировать по фамилиям (Surname).
Вы, похоже, не понимаете, что такое группировка.
при использовании группировки выбирать можно только те поля, которые указаны в перечне группируемых полей (ну и агрегатные функции, конечно). Подробнее почитайте в "Понимание SQL" Мартина Грабера.

т.е. в вашем случае (чисто формально):
Код:
select
	s.surname
	from students s
	 left outer join(
	select student_id, count(mark) count_mark
	from EXAM_MARKS
	group by STUDENT_ID, mark
	having mark >= 3) em on em.student_id = s.id 
	group by s.SURNAME
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

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