1

次のOracleテーブルがあり、the last (aka max) entry by aGroup and day where the timepart of dateTime in less than 00:00:15必要だとします(日はのdatepartとして抽出する必要がありますdateTime

そのための SQL クエリは何でしょうか (dateTime から日を抽出する方法がわかりません)。

              dateTime aGroup
2011-01-01 00:00:12      a
2011-01-01 00:00:31      a
2012-01-01 00:00:09      a
2012-01-01 00:00:03      a
2011-01-01 00:00:06      b
2011-01-01 00:00:14      b
2011-01-01 00:00:16      b
2012-01-01 00:00:16      b
2012-01-01 00:00:11      b

これは私が結果として期待したいことです

              dateTime aGroup
2011-01-01 00:00:12      a
2012-01-01 00:00:09      a
2011-01-01 00:00:14      b
2012-01-01 00:00:11      b
4

4 に答える 4

1

そして、これは to_char を使用した私の試みです

SELECT AGROUP, MAX(DATETIME) FROM MYTABLE
WHERE TO_CHAR(DATETIME,'SS') <'15'
GROUP BY TO_CHAR(DATETIME,'YYYY-MM-DD'), AGROUP
ORDER BY AGROUP
于 2013-04-03T12:54:40.377 に答える
1
select dateTime, agroup
  from (select dateTime, agroup, 
               row_number() over (partition by agroup, trunc(datetime)
                                  order by datetime desc) rn
          from yourtab
         where to_number(to_char(datetime, 'hh24miss')) < 15)
 where rn = 1

それをします。http://sqlfiddle.com/#!4/b4eb98/1を参照してください

于 2013-04-03T12:56:26.013 に答える