id game point
1 x 5
2 y 4
3 z 6
4 x 2
5 y 5
6 z 8
私はゲームxに最小点を持つレコードを選択したい、ゲームのy、zのゲーム最小値を持つ同じグループ内の行を選択しますか?
id game point
1 x 5
2 y 4
3 z 6
4 x 2
5 y 5
6 z 8
私はゲームxに最小点を持つレコードを選択したい、ゲームのy、zのゲーム最小値を持つ同じグループ内の行を選択しますか?
使用GROUP BY
とMIN
集約関数。グループと
クエリ
select game, min(point) as minPoint
from your_table_name
group by game;
使用集約関数この試してみてください、によって:あなたがしたい場合は集計関数
select game, MIN(point) as Minimum_Points
from Table_name
group by game;
に名前を付けるために与えることができます
select game, MIN(point)
from Table_name
group by game;
を全体のレコード、あなたはもう少し仕事をするでしょう:
SELECT * from table_name
WHERE (game, point) IN (select game, min(point) from table_name
GROUP BY game);
また、CTEまたはウィンドウ関数を使用することもできます。
OPのdbmsが "行とテーブルのコンストラクタ"をサポートしている限り、素晴らしい答えです。 – jarlh
@RadimBača、ええ、それはtable_nameだったはずです。一定。 –
私は次のようにあなたもGROUP BY
せずに必要なすべての値(すべての属性)を見つけるためにどのように最も簡単な方法があると思います:
SELECT t1.id, t1.point, t1.[group]
FROM your_table t1
WHERE t1.point = (
SELECT min(t2.point)
FROM your_table t2
WHERE t2.[group] = t1.[group]
)
このコードスニペットをご利用いただき、ありがとうございます。適切な説明(* meta.stackexchange.com/q/114762)は、*なぜ*これが問題の良い解決策であるかを示すことで長期的な価値を向上させ、将来の読者にとって他の同様の質問。あなたの前提を含め、あなたの答えを[編集]して説明を加えてください。 –
@TobySpeight done、最高 –
あなたも、パーティション上で使用することができます。
問合せ:
select id,game,min_point from (
select id, GAME, POINT,min(POINT) over (PARTITION by GAME) as MIN_POINT
from YOUR_TABLE) where point = min_point
結果:ここ
id game min_point
1 x 2
2 y 4
3 z 6
多くの答えが、私たちはOPが使用しているDBMSかわからないので、私が最も一般的な答えでいいと思う:
select t1.id, t1.game. t1.point
from tablename t1
join (select game, min(point) as minpoint
from tablename
group by game) t2
on t1.game = t2.game
and t1.point = t2.minpoint
GROUP BY
の派生テーブル(サブクエリ)を使用して、各ゲームの最小点を見つけます。 JOIN
となります。オラクルで
、これはと行うことができます -
select id,game,point As MinPoint
from table_name where
point in (select min(point) from table_name group by game);
次のようにデータの類似の種類の出力は次のとおりです。 -
選択* sql_pracから。
ID DEPT SAL
1 A 2000
2 B 200001
3 C 200100
4 D 200050
5 A 205000
6 B 260000
7 C 200007
8 D 202000
9 R 2006600
9行はゲームによってsql_prac群から(セレクト分(点)でsql_pracここ 点からMinPoint として
選択ID、ゲーム、ポイントを選択);
ID DEPT MINPOINT
1 A 2000
2 B 200001
4 D 200050
7 C 200007
9 R 2006600
あなたは、単純なクエリの下に実行する必要があります:
select game, min(point) point from [table_name] group by game
はあまりにもここにテキストをフォーマットし、同様に期待された結果を追加します。現在のクエリの試行を表示してください。また、使用しているdbmsにタグを付けます。 – jarlh