Как я могу подсчитать уникальные пары значений в SQL?

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

select column, count(column) as count 
         from table group by column order by count desc;

Как мне получить все уникальные пары значений с помощью count. Например, если бы у меня была таблица с столбцами first_name и last_name, я мог бы найти результаты примерно так:

first_name | last_name | count

Джон | Смит | 42

Джон | Джонсон | 39

Дэвид | Смит | 37

и т.д...

Могу ли я сделать это в базовом SQL? Я обычно использую MySQL, но я предполагаю, что любое решение, которое вы придумали, должно быть переводимым на любой db.

Ответы

Ответ 1

У вас почти все правильно... Вы просто добавили дополнительный столбец GROUP BY, например:

SELECT [first_name], [last_name], COUNT(*) AS [Count] 
FROM [Table]
GROUP BY [first_name], [last_name]
ORDER BY [Count] DESC;

Ответ 2

Используйте несколько столбцов в разделе group by.

select first_name, last_name, count(*) as count from table group by first_name, last_name

Ответ 3

Если вам просто нужно подсчитать количество различных пар, вы можете сделать это более просто. A GROUP BY не требуется.

SELECT COUNT(DISTINCT first_name, last_name) AS count_names FROM Table

Ответ 4

SELECT first_name, last_name, COUNT(distinct last_name) AS c
FROM ttable
GROUP BY first_name, last_name
HAVING c > 999
ORDER BY c DESC 

Добавление отличия сделает это в MYSQL. Благодаря