SQL查询每天的最新记录

Mac*_*Mac 2 sql oracle10g greatest-n-per-group

我有一个Oracle 10g数据库,其表格的结构和内容与以下内容非常类似:

CREATE TABLE MyTable
(
    id         INTEGER PRIMARY KEY,
    otherData  VARCHAR2(100),
    submitted  DATE
);

INSERT INTO MyTable VALUES (1, 'a', TO_DATE('28/04/2010 05:13', ''DD/MM/YYYY HH24:MI));
INSERT INTO MyTable VALUES (2, 'b', TO_DATE('28/04/2010 03:48', ''DD/MM/YYYY HH24:MI));
INSERT INTO MyTable VALUES (3, 'c', TO_DATE('29/04/2010 05:13', ''DD/MM/YYYY HH24:MI));
INSERT INTO MyTable VALUES (4, 'd', TO_DATE('29/04/2010 17:16', ''DD/MM/YYYY HH24:MI));
INSERT INTO MyTable VALUES (5, 'e', TO_DATE('29/04/2010 08:49', ''DD/MM/YYYY HH24:MI));
Run Code Online (Sandbox Code Playgroud)

我需要做的是在数据库中查询每个特定日期提交的最新记录.例如,根据上述数据,我预计将返回ID号为1和4的记录,因为这些记录分别是4月28日和4月29日的最新记录.

不幸的是,就SQL而言,我几乎没有什么专业知识.任何人都可以提供一些有关如何实现这一目标的见解吗?

提前致谢!

Tho*_*mas 6

我会像这样使用公用表表达式(又称CTE):

With RankedItems As
    (
    Select  Id, otherdata, submitted
        , ROW_NUMBER() OVER( PARTITION BY TO_CHAR(submitted, 'YYYY-MM-DD') ORDER BY submitted DESC ) ItemRank
    From MyTable
    )
Select
From RankedItems
Where ItemRank = 1
Run Code Online (Sandbox Code Playgroud)