1

サンプルテーブル:

id------user_id------grade_id------time_stamp

1---------100----------1001---------2013-08-29 15:07:38

2---------101----------1002---------2013-08-29 16:07:38

3---------100----------1001---------2013-08-29 17:07:38

4---------102----------1003---------2013-08-29 18:07:38

5---------103----------1004---------2013-08-29 19:07:38

6---------105----------1002---------2013-08-29 20:07:38

6---------100----------1002---------2013-08-29 21:07:38

その特定の場合にのみuser_id = 100グループ化された行を選択したい。grade_idtime_stamp is leastgrade_id

したがって、上記の表から、次のようになります。

行 1は、 grade_id(1001)time_stampの値が最小であるためです。

ただし、特定のgrade_idに対して 1 行のみが必要なため、行 2ではありません

その特定の grade_id のため、行6もありません。 has least value for user_id 105

基本的すぎて明らかに投稿する価値のないことをいくつか試しました。

ありがとうございました

4

2 に答える 2

1

ネストされたクエリを試すことができます:

SELECT grade_id, COUNT(grade_id) FROM SAMPLE_TABLE ST WHERE time_stamp = (SELECT MIN(time_stamp) FROM SAMPLE_TABLE STT WHERE STT.grade_id = ST.grade_id) AND user_id = 100 GROUP BY grade_id;  

この場合、ネストされたクエリは、特定の「grade_id」ごとに最小のタイムスタンプを提供し、それを WHERE フィルターで使用できます。

于 2013-09-02T11:12:15.587 に答える
1
SELECT t.*
FROM tableX AS t
  JOIN
    ( SELECT grade_id, MIN(time_stamp) AS time_stamp
      FROM tableX
      GROUP BY grade_id
    ) AS g
      ON  g.grade_id = t.grade_id
      AND g.time_stamp = t.time_stamp
WHERE t.user_id = 100 ;
于 2013-09-02T11:23:58.850 に答える