1

次のようなテーブルがあります

user_id HouseNo      Name   location_id
 1     0-0        aaa    1
 2     0-0        bbb    1
 3     0-1        ccc    1
 4     1-2        ddd    1
 5     2-1        eee    1
 6     1-2        fff    1
 7     2-1        ggg    1
 8     1-2        hhh    1
 9     2-1        iii    1
 10    3-0        jjj    1
 11    3-0        kkk    1
 12    3-0        lll    1

ここで2つの質問があります

1) 家番号でユーザー数を取得する必要があります。そのために、house_no でユーザー グループから house_no,count(user_id) を選択しました。

それから私は結果を得ました

    house_no count(house_no)
    0-0        2
    0-1        1
    1-2        3
    2-1        3
    3-0        3

私には問題ありません。

しかし、私の質問は、カウント 1 を持つ家族の数とカウント 2 を持つ家族の数を取得する方法です ......

Like as follows:


 count1   1
 count2   1
 count3   3

ここで、count1 は 1 人のユーザーを持つファミリーの数を意味し、count2 は 2 人のユーザーを持つファミリーの数を意味しません......

ここには 3 つの固定条件があります。count<=3 count >4 と count<10 count >10 です。

次のような結果が必要です

count1   count2 count3
1         1       3

注:ここで同じ家族とは、同じ houseno を含むユーザーを意味します。助けてください...よろしくお願いします....

4

2 に答える 2

1

以下のクエリには 2 つの部分があり、最初の部分は ごとのメンバー数を計算するサブクエリHouse_Noです。その後、サブクエリの結果が再度計算され、今回はメンバーの数としてグループ化されます。

SELECT  CONCAT('COUNT', totalMember) FamilyMember, COUNT(*) NumberOfFamilies
FROM
        (
            SELECT  House_No, COUNT(*) totalMember
            FROM    TableName
            GROUP   BY House_no
        ) x
GROUP   BY totalMember
ORDER   BY totalMember

出力

╔══════════════╦══════════════════╗
║ FAMILYMEMBER ║ NUMBEROFFAMILIES ║
╠══════════════╬══════════════════╣
║ COUNT1       ║                1 ║
║ COUNT2       ║                1 ║
║ COUNT3       ║                3 ║
╚══════════════╩══════════════════╝
于 2013-04-04T08:25:58.407 に答える
0

N メンバーを持つファミリを一覧表示するには、 HAVING GROUP BY修飾子を使用できます。

1 人家族の場合:

SELECT Name, count(*) as c FROM Tablename GROUP BY Name HAVING c=1;

2人家族の場合:

SELECT Name, count(*) as c FROM Tablename GROUP BY Name HAVING c=2;

于 2013-04-04T08:56:57.907 に答える