2012-05-05 37 views
2

我有一個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和計數them.Like

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條記錄,'B'人的下2條記錄等等。
給我任何參考或提示..
在此先感謝。只有

回答

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 

在這裏你去!

+0

,但如何計算並顯示ASC –

+0

@sandiparmal檢查它應該爲你工作的編輯。 –

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 
...   
+1

他想要計算所有以A,B,...開頭的單詞,並按字母對這些單詞進行分組,然後檢查我的解決方案。 –

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 
4

它是如此簡單,

SELECT SUBSTRING(name,1,1) as ALPHABET, COUNT(name) as COUNT 
FROM voter GROUP BY SUBSTRING(name,1,1);