как найти все одинаковые значения в нескольких столбцах одним запросом - PullRequest
0 голосов
/ 17 мая 2019

как суммировать и сортировать все различные значения в нескольких столбцах? У меня есть таблица с 3 столбцами, и я хочу подсчитать все уникальные значения всех строк, которые встречаются в этих 3 столбцах: worp1, worp2, worp3

Для одного столбца он работает с этим запросом:

'''

SELECT 
    worp1, 
    COUNT(worp1) c
FROM
    logfile
GROUP BY worp1
order by c

'''

Что я хочу, чтобы вывод:

worp123  |count
T20      |20
T19      |18
20       |15
....
T11      |0

образец данных:

datum, speler, worp1,worp2,worp3
2019-05-07 23:50:46, 3, 1, T20, 0
2019-05-07 23:51:21, 1, 3, 7, 19
2019-05-07 23:51:34, 2, 5, T1, 20
2019-05-07 23:51:55, 3, 25, 25, D25
2019-05-07 23:52:28, 1, 1, 1, 12
2019-05-07 23:52:38, 2, 20, 20, 18
2019-05-07 23:53:03, 3, 1, 16, 2
2019-05-07 23:53:42, 1, 3, 19, 19
2019-05-07 23:53:53, 2, T5, 5, 5
2019-05-07 23:54:30, 3, 3, 10, 0
2019-05-07 23:54:59, 1, 19, T19, 20
2019-05-07 23:55:11, 2, 1, 5, 4
2019-05-07 23:55:30, 3, 17, 6, 25
2019-05-07 23:56:00, 1, 5, 7, 20
2019-05-07 23:56:07, 2, 20, 20, 20
2019-05-07 23:56:38, 3, 16, 15, 7
2019-05-07 23:57:11, 1, 7, 7, 19
2019-05-07 23:57:26, 2, 1, 5, 20
2019-05-07 23:57:43, 3, 2, 17, 17
2019-05-07 23:58:36, 1, T16, 4, 0
2019-05-07 23:58:43, 2, 4, 12, 20
2019-05-07 23:59:03, 3, 9, T20, 5
2019-05-07 23:59:40, 1, 0, 0, 0
2019-05-07 23:59:45, 2, 18, 20, 0
2019-05-08 00:00:14, 3, T1, 1, 20
2019-05-08 00:00:47, 1, 0, 0, 0
2019-05-08 00:00:54, 2, 6, 0, 0
2019-05-08 00:01:26, 3, T20, D14

Может кто-нибудь указать мне правильное направление?

1 Ответ

0 голосов
/ 17 мая 2019

Это может быть более эффективный способ сделать это, но я думаю, что это сработает для вас:

SELECT worp, SUM(cnt) FROM (
    SELECT worp1 AS worp, COUNT(worp1) AS cnt FROM logfile GROUP BY worp1
    UNION ALL
    SELECT worp2 AS worp, COUNT(worp2) AS cnt FROM logfile GROUP BY worp2
    UNION ALL
    SELECT worp3 AS worp, COUNT(worp3) AS cnt FROM logfile GROUP BY worp3
) a
GROUP BY worp
...