我有一个包含大量数据的voter
表。喜欢
Voter_id name age
1 san 24
2 dnyani 20
3 pavan 23
4 ddanial 19
5 sam 20
6 pickso 38
我需要按字母顺序显示所有voter_name
并计算它们。就像
name
san
sam
s...
s...
dnyani
ddanial
d...
pavan
pickso
p..
p..
我尝试使用count(voter_name)
或GROUP BY
但两个都不适合我.....假设表包含50个选民的详细信息
人名的编号以A=15,b=2, c=10,y=3
开头,依此类推
那么如何统计和显示'A'人的前15个记录,接下来的2个'B'人的记录等等。
给我任何参考或提示..
提前致谢。
答案 0 :(得分:4)
就这么简单,
SELECT SUBSTRING(name,1,1) as ALPHABET, COUNT(name) as COUNT
FROM voter GROUP BY SUBSTRING(name,1,1);
答案 1 :(得分:3)
此订单仅命名:
SELECT `name` FROM `voter` ORDER BY `name` ASC
这会对第一个字母的每次出现进行计数,并将它们分组在一起
例:
Letter COUNT
------ -------
A 15
B 2
C 10
y 3
SELECT SUBSTR(`name`,1,1) GRP, COUNT(`name`) FROM `voter` WHERE
SUBSTR(`name`,1,1)=SUBSTR(`name`,1,1) GROUP BY GRP ORDER BY GRP ASC
你走了!
答案 2 :(得分:1)
如果您需要按升序排列名称及其计数,则可以使用:
SELECT
name, COUNT(*) AS name_count
FROM
voter
GROUP BY
name
ORDER BY
name ASC
这将给出类似
的输出name name_count
------------------
albert 15
baby 6
...
如果您需要显示所有记录及其计数,那么您可以使用:
SELECT
voter_id, name, age, name_count
FROM
(
SELECT
name, COUNT(name) AS name_count
FROM
voter
GROUP BY
name
) counts
JOIN actor
USING (name)
ORDER BY
name
然后输出为:
voter_id name age name_count
------------------------------------
6 abraham 26 2
24 abraham 36 2
2 albert 19 1
4 babu 24 4
15 babu 53 4
99 babu 28 4
76 babu 43 4
...
答案 3 :(得分:1)
在这里检查MySQL的SUBSTRING
功能
http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring
我们可以使用子查询来实现我们的结果。
所以使用它,这个怎么样
SELECT voter_id, name, age, COUNT(*) AS alphabet
FROM
(SELECT voter_id, name, age, SUBSTRING(name, 1, 1) AS first_letter FROM voter)
AS voter
GROUP BY first_letter
ORDER BY first_letter ASC