У меня есть таблица из трех столбцов: newspaper
, person
, page
.
Один человек может прочитать страницу несколько раз, что означает, что у нас может быть такая таблица:
newspaper person page
--------- ------ ----
NY Times A 1
NY Times A 1
NY Times A 1
NY Times A 2
NY Times B 8
NY Times B 9
NY Times B 9
WashPost A 1
WashPost B 1
Я хочу COUNT
для каждой газеты (= GROUP BY newspaper
), сколько раз кто-то читает страницу. Чтобы уточнить, что я имею в виду, для приведенной выше таблицы ввода результат должен выглядеть следующим образом:
newspaper COUNT
--------- --------
NY Times 4 => (A,1) (A,2) (B,8) (B,9)
WashPost 2 => (A,1) (B,1)
Моей первой попыткой был приведенный ниже запрос, который не разрешен sqlite
, но уточняет, что мне нужно:
SELECT newspaper, COUNT(DISTINCT person, page)
FROM T
GROUP BY newspaper
В качестве обходного пути я могу объединить столбцы person
и page
, используя ||
, и запрос работает отлично, но я думал о лучшем решении.
SELECT newspaper, COUNT(DISTINCT person || page)
FROM T
GROUP BY newspaper