2

voter大量のデータを含むテーブルが1つあります。好き

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レコード、「B」の人の次の2レコードなどをカウントして表示する方法..
参照またはヒントを教えてください..
よろしくお願いします。

4

4 に答える 4

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

どうぞ!

于 2012-05-05T09:11:04.580 に答える
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 
...          
于 2012-05-05T09:34:23.030 に答える
1

SUBSTRINGMySQLの機能はこちら

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
于 2012-05-05T09:55:44.890 に答える