• 締切済み

group by したものをsumしたのですが方法がわかりません。

ある情報をgroup byしその数をcountし、そのcountした数をsumしたのですがどのようにすればよろしいでしょうか? 例えば DB名 test a | ------ ABA | A | AA | ABA | select a,count(*) count from test group by a; a |count| ------------- ABA | 2 | A | 1 | AA | 1 | このカウントの数字を一回でsumすることは可能でしょうか? 宜しくお願いします。

みんなの回答

回答No.3

例題通りだと、 先にお答えしてくれている方のが効率的ですが、 他に条件等絡み条件が複雑で、 >ある情報をgroup byしその数をcountし、そのcountした数をsumしたのですがどのようにすればよろしいでしょうか? との文面通りだとしたら、 サブクエリとか利用したらどうですか? SELECT SUM(TAB01.CNT) AS SUMA FROM (SELECT A,COUNT(A) AS CNT  FROM test GROUP BY A ) TAB01; といった感じではどうですか?

keeeeeeeen
質問者

補足

回答ありがとうございました。 私の質問の仕方が間違っておりました。 重複せずに値の数(上記例の場合3)を返したかったのですが…。

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.2

例でいうとABAが2件、Aが1件、AAが1件の合計の「4」 を返したいのであれば、グループ化しなければいいだけの話です。 select count(*) count from test

keeeeeeeen
質問者

補足

早速の回答ありがとうございます。 質問の仕方をまちがっておりました。 そして普通に目的の答えを出すことが出来ました。 ご迷惑おかけしました。 ありがとうございます。

  • shiranuik
  • ベストアンサー率71% (10/14)
回答No.1

例にあります、Count(*)列の数値[2,1,1]をSumするという理解で正しいでしょうか? それでしたら単純に、 select Sum(a) from test; で項目aの総数がでると思うのですが…。 私の理解不足でしたら申し訳ございません。

keeeeeeeen
質問者

補足

早速の回答ありがとうございます。 私の書き方に誤りがあったので訂正させていただきます。 正しくはgroup byしたものをカウントしたいので、最終的には上記例の場合3(ABA,A,AA)が返って欲しいんです。 要は重複のないように出したかったんです。 もうしわけございませんでした。

関連するQ&A