SQL在多列上计数?

时间:2012-12-13 14:48:45

标签: mysql sql

如果我的表格中有两列说first_namelast_name,我想知道有多少人共享同一个名称,例如:

Name Count | Name
-------------------------
 12        | John Smith
  8        | Bill Gates
  4        | Steve Jobs

3 个答案:

答案 0 :(得分:3)

按两列分组 - 例如:

select firstname, lastname, count(*) as `Name Count`
from table
group by firstname, lastname

答案 1 :(得分:1)

由于名称可以有不同的大小写(即'John'和'john'),并且数据库中可能有多余的空格,因此首先使用一个子查询来清理和连接名字和姓氏,然后使用{{1} }和COUNT

GROUP BY

你会注意到我将SELECT COUNT(*) AS `name_count` FROM ( SELECT CONCAT(LOWER(TRIM(`first_name`)), ' ', LOWER(TRIM(`last_name`))) AS `full_name` FROM `table` ) AS `table_with_concat_names` GROUP BY `full_name` ORDER BY `name_count` DESC; 应用于名字和姓氏。这样,他们用LOWER()全部小写,这样'John Smith'和'john smith'在比较时就是同一个人,而且我还用TRIM()去除了多余的空格,所以'John Smith'(后面的空格) )和'约翰史密斯'也是同一个人。

答案 2 :(得分:0)

使用group by子句

select (firstname + ' ' + lastname) as Name, count(*) as 'Name Count'
from table
group by (firstname + lastname)