2つのフィールドでgroupbyを使用し、SQLでカウントする


83

mysqlデータベースにgroupとsubgroupの2つの列を持つテーブルがあります。下記参照。

 group, subGroup
 grp-A, sub-A
 grp-A, sub-A
 grp-A, sub-B      
 grp-B, sub-A
 grp-B, sub-B
 grp-B, sub-B

一意のカップルグループ/サブグループごとにレコード数を取得しようとしています。

これは私が期待することです:

group, subGroup, count
grp-A, sub-A, 2
grp-A, sub-B, 1
grp-B, sub-A, 1
grp-B, sub-B, 2

いくつかの投稿を読んだ後、group by、count()を使用していくつかのSQLクエリを試しましたが、期待した結果を得ることができませんでした。どうすればこれを修正できますか?


1
別のケース、各グループのsugroupの数が必要だったので、これはクエリSELECT a、b、COUNT(distinct b)FROM tbl GROUP BY a
luky

回答:


139

私はあなたが探していると思います: SELECT a, b, COUNT(a) FROM tbl GROUP BY a, b


1
こんにちはコービンブ。どうもありがとうございました。それは働いています。私はあなたが提案していることをしましたが、a、bによるグループ化を行いました。aとbによるグループ化を行いました。もう一度ありがとう
マーク

3
a and bMySQLのステートメントのように見えます(構文エラーになるのか、0または1の戻り値でグループ化されるのかは実際にはわかりません。特にvarcharフィールドの場合は構文エラーと見なされます)。複数の列でグループ化するには、コンマを使用するだけです。
コービン2012

1
どうもありがとう!!..私にとっての問題は、私の質問を表現することができず、グーグルで多くの時間を費やして、簡単でドットの解決策を求めて最終的にここに着陸したことでした。
faheem farhan 2016年

カウントの代わりに、レコード全体の詳細が必要でした。たとえば、grpAにはsubAとsubBの2つのサブグループが必要なので、各サブグループのレコード全体を取得する必要があります。誰か助けてくれませんか。@Corbin
admin 7798

2
各グループのsugroupの数が必要だったので、これはクエリSELECT a、b、COUNT(distinct b)FROM tbl GROUP BY a
luky

8
SELECT group,subGroup,COUNT(*) FROM tablename GROUP BY group,subgroup

カウントの代わりに、レコード全体の詳細が必要でした。たとえば、grpAにはsubAとsubBの2つのサブグループが必要なので、各サブグループのレコード全体を取得する必要があります。誰か助けてくれませんか。@ user1127214
admin 7798

7

グループとサブグループの両方の列をグループ化してから、集計関数を使用する必要がありますCOUNT()

SELECT
  group, subgroup, COUNT(*)
FROM
  groups
GROUP BY
  group, subgroup

1
私にはタイプミスのようですgroup!= groupName
csharpwinphonexaml 2016年

カウントの代わりに、レコード全体の詳細が必要でした。たとえば、grpAにはsubAとsubBの2つのサブグループが必要なので、各サブグループのレコード全体を取得する必要があります。誰か助けてくれませんか。@farzane
admin 7798
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.