Запрос возвращает несколько идентификаторов - PullRequest
0 голосов
/ 15 марта 2020

У меня есть запрос, который находит наиболее частые числа в нескольких столбцах (с именами S1, S2, S3, S4, S5 и S6. Похоже, что запрос работает довольно хорошо, но он не учитывает общее число на один идентификатор в столбцах.

Вот запрос:

SELECT tag, qty, firstname, lastname, spelarid, position from (
SELECT s1 AS tag, count(1) AS qty FROM matchmal where 23 IN (s1, s2, s3, s4, s5, s6) and goal='0' and lage ='EQ' GROUP BY tag
UNION
SELECT s2 AS tag, count(1) AS qty FROM matchmal where 23 IN (s1, s2, s3, s4, s5, s6) and goal='0' and lage ='EQ'  GROUP BY tag
UNION
SELECT s3 AS tag, count(1) AS qty FROM matchmal where 23 IN (s1, s2, s3, s4, s5, s6) and goal='0' and lage ='EQ'  GROUP BY tag
UNION
SELECT s4 AS tag, count(1) AS qty FROM matchmal  where 23 IN (s1, s2, s3, s4, s5, s6) and goal='0' and lage ='EQ'  GROUP BY tag
UNION
SELECT s5 AS tag, count(1) AS qty FROM matchmal where 23 IN (s1, s2, s3, s4, s5, s6) and goal='0' and lage ='EQ'  GROUP BY tag
UNION
SELECT s6 AS tag, count(1) AS qty FROM matchmal where 23 IN (s1, s2, s3, s4, s5, s6) and goal='0' and lage ='EQ'  GROUP BY tag
) temp LEFT JOIN spelare ON spelare.spelarid = tag
WHERE tag != 23 AND qty > 1
ORDER BY qty DESC

Приведенный выше запрос возвращает общее значение fe

Tag 37 (Robin Johansson): '21' и тег 28 Общее значение Себастьяна Боргса должно быть '17' и c.

Я пытался использовать GROUP BY spelarid и тег, но он не суммирует общее число.

1 Ответ

0 голосов
/ 15 марта 2020

Вы можете отключить и сосчитать. Я думаю, что вы хотите что-то вроде этого:

SELECT m.tag, COUNT(s.spelareid)
FROM (SELECT (CASE n WHEN 1 THEN s1 WHEN 2 THEN w2
                     WHEN 3 THEN s3 WHEN 4 THEN w4
                     WHEN 5 THEN s5 WHEN 6 THEN w6
              END) AS tag
      FROM matchmal m CROSS JOIN
           (SELECT 1 as n UNION ALL
            SELECT 2 as n UNION ALL
            SELECT 3 as n UNION ALL
            SELECT 4 as n UNION ALL
            SELECT 5 as n UNION ALL
            SELECT 6 as n
           ) n
      WHERE 23 IN (s1, s2, s3, s4, s5, s6) AND
            m.goal = 0 AND
            m.lage = 'EQ'
     ) m LEFT JOIN
     spelare s
     ON m.tag = s.spelareid
GROUP BY m.tag
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...