Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » SQL запрос

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Открыть новую тему     Написать ответ в эту тему

Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
granitiv
ну, в SELECT MIN(speed), AVERAGE(speed), MAX(speed)

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 09:40 06-12-2023
Molodetsss

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть футбольная таблица:
id
match_id (ссылается на таблицу игр)
player_id (ссылается на таблицу игроков)
 
То есть допустим так:
1  1  1
1  1  2
1  1  22
 
Как написать запрос, чтобы он показал, какие 2 игрока выходили вместе чаще всего (но более 30 раз), то есть:
player1_id
player2_id
count_matches
 
Спасибо

Всего записей: 134 | Зарегистр. 24-04-2022 | Отправлено: 13:25 13-01-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Molodetsss
для MySQL:
SELECT t1.player_id, t2.player_id, count(*) matches
FROM games t1
JOIN games t2 ON t1.match_id = t2.match_id AND t1.player_id <> t2.player_id
GROUP BY t1.player_id, t2.player_id
HAVING count(*) BETWEEN 2 AND 30
 
минус - будет выводиться два раза, для одного и для второго игрока.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 13:44 13-01-2024 | Исправлено: Mavrikii, 13:48 13-01-2024
Molodetsss

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
минус - будет выводиться два раза, для одного и для второго игрока.

 
спасибо! это не страшно.
 
А как еще составить запрос, чтобы он в убывающем порядке вывел игроков, которые провели более 100 матчей?

Всего записей: 134 | Зарегистр. 24-04-2022 | Отправлено: 13:52 13-01-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Molodetsss

Цитата:
А как еще составить запрос, чтобы он в убывающем порядке вывел игроков, которые провели более 100 матчей?

Делаете HAVING count(*) > 100 и добавляете ORDER BY matches DESC

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 13:54 13-01-2024 | Исправлено: Mavrikii, 13:58 13-01-2024
Molodetsss

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
извините, не понял последний ответ.
 
Вот есть футбольная таблица:
id
match_id (ссылается на таблицу игр)
player_id (ссылается на таблицу игроков)  
role_id (амплуа, 0 - тренер, 1 - игрок)
 
Как составить запрос, чтобы он в убывающем порядке вывел игроков (когда играл, а не был тренером), которые провели более 100 матчей?

Всего записей: 134 | Зарегистр. 24-04-2022 | Отправлено: 14:46 14-01-2024
vikkiv



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
...когда играл, а не был тренером...

добавляешь условие фильтрации
where role_id=1
 
дальше как уже указали выше при агрегации group by player_id:

Цитата:
которые провели более 100 матчей
having count (distinct match_id)>100

Цитата:
...убывающем порядке...
order by count(distinct match_id) desc
 
Добавлено:
distinct добавит нагрузки но без знания качества данных лучше пока так

Всего записей: 747 | Зарегистр. 10-11-2005 | Отправлено: 18:51 14-01-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Molodetsss

Цитата:
извините, не понял последний ответ.

что же тут непонятного?
 

Код:
SELECT t1.player_id, t2.player_id, count(*) matches
FROM games t1
JOIN games t2 ON t1.match_id = t2.match_id AND t1.player_id <> t2.player_id
WHERE t1.role_id = 1 AND t2.role_id = 1
GROUP BY t1.player_id, t2.player_id
HAVING count(*) > 100
ORDER BY matches DESC

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:07 14-01-2024
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » SQL запрос


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru