@lucifer_jr

Как сформировать запрос для представления из базы данных ms sql?

Имеется такая ER-диаграмма бд
5c1a5a373da16685374964.png

Необходимо создать представления:
1) Вид спорта, количество соревнований за год, количество попаданий спортсменов из 'России' в призеры.
2)Страна, количество спортсменов этой страны, общее количество побед спортсменов этой страны за год на соревнованиях, в названиях которых входит слово 'плавание'.
3)Вид спорта, рекорды, установленные в этом виде спорта за последние пять лет, место соревнований, на которых установлены рекорды.

Возникает большая сложность с созданием выборки сразу с несколькими полями для количества. В 1) случае пришел к такому коду:
SELECT kof.name_of_sport, COUNT(name_of_sport) as yearCount FROM RESULTS r
	JOIN KIND_OF_SPORT kof ON r.kind_of_sport_id = kof.id
	WHERE r.date_of_event >= '2017-01-01' AND r.date_of_event <= '2018-12-12'
	GROUP BY kof.name_of_sport) as T, RESULTS r

Но не могу представить, как дальше найти количество попаданий спортсменов из 'России' в призеры.
Да и вообще, как создавать один select сразу с несколькими count(...). Буду признателен за помощь)
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
Возникает большая сложность с созданием выборки сразу с несколькими полями для количества.
Вычисление каждого количества отдельным подзапросом.
SELECT [спорт],
  (SELECT COUNT(*) FROM [результат] AS R1 WHERE R1.[спорт] = S.[спорт] ) AS [результат] 
  (SELECT COUNT(*) 
     FROM [результат] AS R2 JOIN [спортсмен] AS P ON P.[спортсмен] = R2.[спортсмен]
     WHERE R2.[спорт] = S.[спорт] AND P.[страна] = 'Россия' ) AS [результат Россия]
FROM [спорт] AS S

Все остальные условия допишите сами.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы