BY GROUPからグラブ一番上の行:Complex Grouping in SQL Query ...私の最後の質問のオフに行く
各グループでは、私は最高の「ステップ」の値で行のみを取得したいと思います。
SELECT a.*, b.*
FROM (
SELECT request_id
FROM tableA
GROUP BY request_id
HAVING MAX(page_views) <= 0 AND MAX(step) <= 2
) AS sumQ
INNER JOIN tableA AS a ON sumQ.request_id = a.request_id
INNER JOIN tableB AS b ON a.request_id = b.id
返します:
これは、我々は最後の質問に思い付いたクエリがある
id request_id page_views step name phone
----------------------------------------------------------------
8 3 0 0 Jacob Clark 434-343-434
9 3 0 1 Jacob Clark 434-343-434
10 4 0 0 Alex Smith 222-112-2112
11 4 0 1 Alex Smith 222-112-2112
12 4 0 2 Alex Smith 222-112-2112
私が欲しかったものである、しかし、私が実現し、各グループ内(グループそのby request_id)私は、最も高い「ステップ」値を持つ行のみが必要です。既存のクエリを修正するにはどうすればいいですか?
id request_id page_views step name phone
----------------------------------------------------------------
9 3 0 1 Jacob Clark 434-343-434
12 4 0 2 Alex Smith 222-112-2112
?
カイルは、この答えで注意するべきことは一つだが、同じMAX(ステップ)を共有するrequest_idを1つ以上のレコードとすると、1つ以上のレコードが取得されるということを意味する。あなたが無作為に選んだ1つだけを選択したいのであれば、ゴードンが確かに知っていると確信しているrownumberを使用する必要があります。それがあなたが望むものなら確かに – Matt
ありがとうMatt。グループごとに同じrequest_idを持つ複数の行がある場合は、実際には問題ありません。 –