Запрос для подсчета количества чисел в предыдущих строках - PullRequest
0 голосов
/ 08 июля 2019

У меня есть табличное представление так:

Id, Picks
5, 1
5, 5
5, 10
5, 20

4, 8
4, 10
4, 11
4, 22

3, 1
3, 8
3, 10
3, 25

2, 3
2, 5
2, 23
2, 24

1, 14
1, 17
1, 20
1, 24

с двумя столбцами Id и Picks.Идентификатор повторяется четыре раза для каждого розыгрыша, который имеет 4 числа между 1-25.

Я хотел бы отобразить количество номеров каждого розыгрыша, которые происходят в предыдущих 3 розыгрышах.Таким образом, для номеров розыгрыша с id = 5, если эти числа встречаются один раз в тиражах с идентификаторами 4,3 и 2, то они подсчитываются.

Таким образом, в приведенном выше примере счет будет выглядеть следующим образом:

Id, Count
5,  3
4,  2
etc.

Как я могу получить этот результат с помощью запроса MySQL?табличное представление не имеет уникального идентификатора.

Ответы [ 2 ]

3 голосов
/ 08 июля 2019

Думаю, вам нужно что-то вроде:

select
  a.id, count(distinct b.picks)
from my_table a
join my_table b on b.picks = a.picks
               and b.id between a.id - 3 and a.id - 1
group by a.id
2 голосов
/ 08 июля 2019

С EXISTS:

select 
  t.id,
  sum(
    case when exists (
        select 1 from tablename 
        where (id between t.id - 3 and t.id - 1) and picks = t.picks
      ) then 1
      else 0
    end
  ) counter
from tablename t 
group by t.id
order by t.id desc

См. Демоверсию .
Результаты:

| id  | counter |
| --- | ------- |
| 5   | 3       |
| 4   | 2       |
| 3   | 0       |
| 2   | 1       |
| 1   | 0       |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...