Member 12480796 Ответов: 2

SQL-запрос, чтобы получить количество различных ID матча


Я хочу выбрать количество сыгранных матчей/идентификатор игрока и сумму (гол)

Матч Ид Игрока ИД Цели
1 119 1
1 120 1
1 142 1
1 119 0
1 120 1
1 137 1
2 119 1
2 120 1
3 119 1

Что я уже пробовал:

SELECT tmp.[Player Id], Count(tmp.[Match Id]) AS MatchPlayed
FROM (SELECT DISTINCT
          [Match Id],[Player Id]
      FROM [Match Details]
    )  AS tmp
GROUP BY tmp.[Player Id];

2 Ответов

Рейтинг:
1

F-ES Sitecore

Непроверенный, но что-то вроде

SELECT [Player Id], Count([Match Id]) AS MatchPlayed, Sum([Goal]) AS GoalCount
FROM [Match Details] GROUP BY [Player Id]


Maciej Los

Это не вернется. MatchId ;(

F-ES Sitecore

Если у игрока есть 3 матча и 10 голов, какой идентификатор матча вы хотите вернуть? Если вы хотите, чтобы все матчи также играл этот человек, то вам будет проще просто выполнить два запроса: один-чтобы получить статистику, а другой-чтобы перечислить матчи.

Maciej Los

Взгляните на данные ОП:

1 119 1
...
1 119 0

Игрок 119 сыграл 2 матча с одним и тем же идентификатором. Таким образом, ваш запрос вернет 2 совпадения, но OP хочет вернуть только 1. Понял?

F-ES Sitecore

Если он сыграл два матча, то количество матчей равно двум, насколько я могу судить, это правильно.

Рейтинг:
0

Maciej Los

Предварительное замечание: на MS SQL Server вы можете использовать: SELECT COUNT(DISTINCT <FieldName>) FROM ..., но в базе данных MS Access такая инструкция вызовет ошибку. ;(

Итак, вы можете выбрать один из способов:
1) подзапрос
2) присоединяемой таблицы

Это должно работать так, как ожидалось:

SELECT tmp.[Player Id], SUM(tmp.[MatchPlayed) AS MatchPlayed, SUM(t2.Goal) AS PointsReached
FROM (SELECT DISTINCT [Player Id], COUNT([Match Id]) As MatchPlayed
      FROM [Match Details]
      GROUP BY [Player Id]
    ) AS tmp INNER JOIN [Match Details] AS t2 ON tmp.[Player Id] = t2.[Player Id]
GROUP BY tmp.[Player Id];


Для получения более подробной информации, пожалуйста, смотрите: Методы Доступа К Подзапросам[^]
Советы и методы для запросов в Access 2007[^]


Karthik_Mahalingam

5 для ссылки

Maciej Los

Спасибо, Картик.