如何为每个主题选择最低值?

时间:2016-01-03 21:35:32

标签: sql greatest-n-per-group

subject_ID    Date     Test_id  value
-------     ---------   -----  -----
   1          1/1/2000     A     50
   1          1/1/2000     B     10
   1          1/2/2000     A     55
   1          1/2/2000     B     09
   2          1/1/2000     A     51
   2          1/1/2000     B     13
   2          1/2/2000     A     48
   2          1/2/2000     B     08

大家好,

我对上面的情况有疑问。如您所见,我每天都会为每个科目提供测试结果。我正试图找到一种方法来在规定的时间内为每个测试选择最低值,因此最终表格将是这样的

subject_ID    Date     Test_id  value
-------     ---------   -----  -----
  1          1/1/2000    A      50
  1          1/2/2000    B      09
  2          1/2/2000    A      48
  2          1/2/2000    B      08

2 个答案:

答案 0 :(得分:0)

ANSI标准SQL支持row_number()函数。使用此功能,您可以执行以下操作:

select t.*
from (select t.*,
             row_number() over (partition by subject_id, test_id order by value asc) as seqnum
      from t
     ) t
where seqnum = 1;

答案 1 :(得分:0)

我不确定您使用的是哪种技术,但假设使用GROUP BY的SQL可以使用。

SELECT subject_ID    
    , Date     
    , Test_id
    , MIN(value)
FROM YourTable
GROUP BY subject_ID    
    , Date     
    , Test_id