1

私は次のようなテーブルを持っています

| id | user | bottle |  count |
| 1  | foo  | beer   |    2   |
| 2  | bar  | beer   |    5   |
| 3  | som1 | beer   |    6   |
| 4  | som2 | beer   |    4   |
| 5  | som1 | wine   |    1   |

各グループ (ビール、ワインなど)STDDEV()MIN()MAX()の値を取得するにはどうすればよいですか? つまり、どうやって手に入れるのですかcount

| bottle |      stddev     |

|  beer  |stddev of 2 and 4|

?

また、上記のようなクエリが合計で返す行数を取得するにはどうすればよいですか?

これまで私は試しました

SELECT STD(count) as stddev, bottle
FROM drinks WHERE count < (
    SELECT MAX(count) FROM drinks)
              AND count > (
    SELECT MIN(count) FROM drinks)
GROUP BY bottle;

しかし、それはMAX()テーブル全体だけでなく、 GROUP BY

4

1 に答える 1

3

集計と結合を使用して極端な値を取得し、それらを除外して標準偏差を計算します。

select bottle, STDEV(d.count)
from drd.inks d join
     (select bottle, MIN(count) as minc, MAX(count) as maxc
      from drinks
      group by bottle
     ) dsum
     on d.bottle = dsum.bottle and
        d.count not in (dsum.minc, dsum.maxc)
group by d.bottle
于 2013-07-01T15:45:50.037 に答える