我对此有点失落。我想列出以相同字母开头的名字数量,并找到包含该第一个相同字母的名称总数。
例如:
name | total
-------|--------
A | 12
B | 10
C | 8
D | 7
E | 3
F | 2
...
Z | 1
12个以字母“A”开头的名称,10个以“B”开头的名称,等等。
这是我到目前为止所拥有的
SELECT
LEFT(customers.name,1) AS 'name'
FROM customers
WHERE
customers.name LIKE '[a-z]%'
GROUP BY name
但是,我不确定如何根据相似值添加列。
答案 0 :(得分:3)
这应该适合你:
SELECT
LEFT(customers.name,1) AS 'name',
COUNT(*) AS NumberOfCustomers
FROM customers
WHERE
customers.name LIKE '[a-z]%'
GROUP BY LEFT(customers.name,1)
编辑:忘记解释;正如许多人已经提到的那样,你需要对计算本身进行分组而不是你给它的别名,因为GROUP BY操作实际上发生在SELECT之前,因此还不知道别名。您可以轻松找到COUNT部分。希望有所帮助。
答案 1 :(得分:2)
你不想计算名字,只计算第一个字母。所以你不能group by name
,而是按第一个字母分组
SELECT LEFT(name, 1) AS name, count(*)
FROM customers
GROUP BY LEFT(name, 1)