1

GROUP BY私は言うCOUNT(*)

COUNT(*)        Value
3               200
7               200
10              20
15              80
21              100
30              200
33              400
36              300
37              100

30 を超えるすべてのカウントを独自の行に合計したいと考えています。

COUNT(*)        Value
3               200
7               200
10              20
15              80
21              100
30              200
30+             800

サブクエリ/mysqlでデータを2回クエリせずにこれを達成することは可能ですか?

ありがとう!

編集: サブクエリを意味するとき、2 つの「完全な」クエリが実行されていないという意味でサブクエリを意味しました。

SELECT * FROM(SELECT *...)

結構です。

4

2 に答える 2

0

COUNT の結果に対して IF() 関数を使用することもできますが、その結果は結果セットが完了したときにのみ使用できるため、サブクエリまたは少なくとも派生テーブルが必要になります。

SELECT t.somekey, SUM(IF(t.c > 30, 31, t.c)) As Cnt, SUM(t.s) As Value
FROM (
    SELECT somekey, COUNT(*) c, SUM(value) s
    FROM sometable
) as t
GROUP BY t.somekey

この結果、30 より大きいものはすべて 31 としてグループ化されます。

于 2013-05-03T16:38:37.193 に答える