使用以下sql语句,我可以获得所有唯一值及其给定列的计数:
select column, count(column) as count
from table group by column order by count desc;
如何通过计数获得所有唯一值对。例如,如果我有一个包含first_name和last_name列的表,我可能会发现类似这样的结果:
first_name | last_name |数
约翰|史密斯| 42
约翰|约翰逊| 39
大卫|史密斯| 37
等...
我可以在基本SQL中执行此操作吗?我通常使用MySQL,但我认为你提出的任何解决方案都应该可以翻译成任何数据库。
答案 0 :(得分:18)
你几乎把它弄错了......你只需要添加一个GROUP BY
列,如下所示:
SELECT [first_name], [last_name], COUNT(*) AS [Count]
FROM [Table]
GROUP BY [first_name], [last_name]
ORDER BY [Count] DESC;
答案 1 :(得分:11)
如果你只想要计算多少个不同的对,你可以更简单地做到这一点。 <{1}}子句不是必需的。
GROUP BY
答案 2 :(得分:7)
在group by子句中使用多个列。
select first_name, last_name, count(*) as count from table group by first_name, last_name
答案 3 :(得分:0)
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
添加distinct将在MYSQL中执行。 感谢