0

同じ値を持つ最小値がいくつ存在するか、および各カテゴリの数を確認するクエリを作成したいと思います。テーブルデータはこんな感じ

ID CatId 値
1 1 2.3
2 1 2.3
3 2 1.1
4 1 4.2
5 2 1.5
6 3 8.1
7 1 3.3
8 3 4.2
9 2 1.9

クエリは次のような行を返す必要があります

CatId min(値) count_with_same_min_value count(CatId)
1 2.3 2 4          
2 1.1 1 3
3 4.2 1 2


ありがとう

4

2 に答える 2

3

サブクエリでそれを行うことができます:

select c.catid, min(c.value),
       sum(c.value = cmin.minval),
       count(c.CatId)
from category c join
     (select catid, min(value) as minval
      from category
      group by catid
     ) cmin
     on c.catid = cmin.catid
group by c.catid;

またはselect選択内で:

select catid, min(value),
       (select count(*) from category c2 where c2.value = min(c.value)),
       count(CatId)
from category c
group by catid;
于 2013-09-13T15:27:04.437 に答える
1
 SELECT x.catid
      , MIN(value) a
      , COUNT(y.catid) b
      , COUNT(*) c
   FROM my_table x 
   LEFT 
   JOIN 
      ( SELECT catid
             , MIN(value) min_value 
          FROM my_table 
         GROUP 
            BY catid
      ) y 
     ON y.catid = x.catid 
    AND y.min_value = x.value 
  GROUP 
     BY catid;
于 2013-09-13T15:27:24.970 に答える