Получить повторяющиеся пары, тройки, четверки и так далее из таблицы базы данных SQL? - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть стол из Польши Lotto Multi Multi 20/80 истории рисунков. Итак, каждая строка содержит 20 столбцов с номерами в диапазоне от 1 до 80, без повторяющихся чисел внутри строки.

Есть несколько др aws, где пары 80 и 77 появляются вместе в последнем др aws (проверьте ссылку на изображение), но в результате SQL кажется, что не существует никакого числа 80 или даже 77, самое большое из которых - только 63 в столбце nr2 (подробнее смотрите ссылку на изображение). Я пытаюсь выполнить этот фрагмент кода запроса SQL, и кажется, что каким-то образом он «не перехватывает» все столбцы и проверяет максимальное число столбцов 10 (где в этом случае максимальное число составляет 63), и это не t go далее к столбцу с номером 20 (где максимально возможное сохраненное число равно 80).

Это полный SQL код запроса, который я использовал:

CREATE TABLE IF NOT EXISTS unpivot AS
SELECT *
FROM (
        SELECT DrawId, N1 as n_value FROM draws union all
        SELECT DrawId, N2 as n_value FROM draws union all
        SELECT DrawId, N3 as n_value FROM draws union all
        SELECT DrawId, N4 as n_value FROM draws union all
        SELECT DrawId, N5 as n_value FROM draws union all
        SELECT DrawId, N6 as n_value FROM draws union all
        SELECT DrawId, N7 as n_value FROM draws union all
        SELECT DrawId, N8 as n_value FROM draws union all
        SELECT DrawId, N9 as n_value FROM draws union all
        SELECT DrawId, N10 as n_value FROM draws union all
        SELECT DrawId, N11 as n_value FROM draws union all
        SELECT DrawId, N12 as n_value FROM draws union all
        SELECT DrawId, N13 as n_value FROM draws union all
        SELECT DrawId, N14 as n_value FROM draws union all
        SELECT DrawId, N15 as n_value FROM draws union all
        SELECT DrawId, N16 as n_value FROM draws union all
        SELECT DrawId, N17 as n_value FROM draws union all
        SELECT DrawId, N18 as n_value FROM draws union all
        SELECT DrawId, N19 as n_value FROM draws union all
        SELECT DrawId, N20 as n_value FROM draws
     ) as T;

SELECT nr1, nr2, count(*) as total
FROM
    (
    SELECT up1.n_value as nr1, up2.n_value as nr2
    FROM unpivot up1
    JOIN unpivot up2
      ON up1.DrawId = up2.DrawId
     AND up1.n_value < up2.n_value
   ) T
GROUP BY nr1, nr2
ORDER BY nr2 desc;
-- LIMIT 300;

Повторение пар в базе данных

Результаты запроса

1 Ответ

1 голос
/ 15 февраля 2020

Я подозреваю, что проблема:

 CREATE TABLE IF NOT EXISTS unpivot AS . . .

То есть у вас есть более старая версия таблицы, а новая версия не создается.

Вместо этого выполните:

DROP TABLE IF EXISTS unpivot;

Тогда:

CREATE TABLE unpivot AS . . .
...