如果我的表格中有两列说first_name
和last_name
,我想知道有多少人共享同一个名称,例如:
Name Count | Name
-------------------------
12 | John Smith
8 | Bill Gates
4 | Steve Jobs
答案 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)