Группировать по и иметь агрегирование

Я пытаюсь определить, кто лучший бомбардир в группе чемпионата мира (это личный проект) У меня есть данные, но мне трудно использовать счетчик, группировку и иметь, чтобы выполнить то, что мне нужно.

Группировать по и иметь агрегирование

Мне нужно подсчитать голы Месси (лучший бомбардир) и сгруппировать по каждой из групп, чтобы я получил наивысший результат в каждой группе.

На данный момент у меня есть только соединения:

select * from zonas
left join goles_zonas on (zonas.id = goles_zonas.Id_zona)
inner join goles on (goles.id = goles_zonas.id_gol)
inner join jugadores on (goles.id_jugador = jugadores.id)

Вам следует отредактировать вопрос и предоставить желаемый результат. Также было бы полезно, если бы вы поместили таблицы в вопрос как таблицы текст, а не изображения.

Gordon Linoff 01.05.2018 21:48

Изображение, а не текст. Не указывайте столбец для группы, счетчика или балла. Не приняли ни одного ответа.

paparazzo 01.05.2018 21:52

Ответ, который вы ищете, можно найти здесь. spaghettidba.com/2015/04/24/…

Sean Lange 01.05.2018 21:58
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
3
51
1

Ответы 1

вместо отображения всех столбцов (с помощью SELECT *), чтобы сгруппировать данные, я считаю необходимым выполнять SELECT только для определенных столбцов, которые считаются ключами для определения разницы в каждой группе набора данных для получения агрегации (в в этом случае COUNT) каждой группы наборов данных

SELECT Id_zona, id_gol, id_jugador, COUNT(1) as number_of_goal
FROM zonas
left join goles_zonas on (zonas.id = goles_zonas.Id_zona)
inner join goles on (goles.id = goles_zonas.id_gol)
inner join jugadores on (goles.id_jugador = jugadores.id)
GROUP BY Id_zona, id_gol, id_jugador

Он должен быть сгруппирован по всем столбцам, включая оператор выбора, который не агрегируется.

но если вы ожидаете, что будут отображаться и другие столбцы, которые не являются частью ключей группировки, вы можете сделать это следующим образом

SELECT goles_zonas.* , x.* FROM (
SELECT Id_zona, id_gol, id_jugador, COUNT(1) as number_of_goal
FROM zonas
left join goles_zonas on (zonas.id = goles_zonas.Id_zona)
inner join goles on (goles.id = goles_zonas.id_gol)
inner join jugadores on (goles.id_jugador = jugadores.id)
GROUP BY Id_zona, id_gol, id_jugador ) X 
LEFT JOIN goles_zonas on (x.id = goles_zonas.Id_zona)

Другие вопросы по теме