Oracle11g oracle 11g中的聚合函数结果
有谁能告诉我,对于相同的值,聚合函数max的结果是什么? 假设我有一个creation\u date列,其中包含varchar2形式的日期。如果我尝试maxcreation\u date,结果是什么,它将如何选择行。如果在where子句子查询中使用该列,行是否可预测 这是一个完整的问题Oracle11g oracle 11g中的聚合函数结果,oracle11g,oracle-sqldeveloper,database-administration,Oracle11g,Oracle Sqldeveloper,Database Administration,有谁能告诉我,对于相同的值,聚合函数max的结果是什么? 假设我有一个creation\u date列,其中包含varchar2形式的日期。如果我尝试maxcreation\u date,结果是什么,它将如何选择行。如果在where子句子查询中使用该列,行是否可预测 这是一个完整的问题 从my_表中创建id,其中create_date=从my表中选择maxcreate_date 不太确定你想要实现什么。 假设有一个表my_table,其中包含如下所示的数据。请注意,最后两行在日期列中具有相同的数
从my_表中创建id,其中create_date=从my表中选择maxcreate_date 不太确定你想要实现什么。 假设有一个表my_table,其中包含如下所示的数据。请注意,最后两行在日期列中具有相同的数据 SQL>从my_表中选择*
CREATE_ID CREATE_DATE CREATE_DATE_VARCHAR
---------- ------------------- --------------------
1 1996-07-25 00:00:00 1996-07-25 00:00:00
2 1997-07-26 00:00:00 1997-07-26 00:00:00
3 2013-07-26 00:00:00 2013-07-26 00:00:00
4 2013-07-26 00:00:00 2013-07-26 00:00:00
如果从my_表中执行select*,其中create_date_varchar=从my_表中选择maxcreate_date_varchar;,然后你会得到2条id为3和4的记录
CREATE_ID CREATE_DATE CREATE_DATE_VARCHAR
---------- ------------------- --------------------
3 2013-07-26 00:00:00 2013-07-26 00:00:00
4 2013-07-26 00:00:00 2013-07-26 00:00:00
如果只希望拾取一个,则可以使用ROWNUM=1从my_表中选择*,其中create_date_varchar=从my_表中选择maxcreate_date_varchar,ROWNUM=1;
然后您将得到3或4中的1条记录,这可以通过使用order子句来控制
检查:
提及
要了解有关排序工作原理的更多信息,请参阅
您希望实现什么目标?如果您想获得最新的日期,那么MAXcreate_date将不会提供您想要的。您需要首先将varchar2转换为date。好的。您给我一个提示。我只想知道oracle聚合函数如何选择任何一行,如果每个值都相同,它将返回其中一个值,它将始终返回一个值,但是无法预测它将返回其中哪一个值。示例:从tbl中选择MAXcol,其中tbl.col的值为1、2、1、4,它将返回1。现在是第一排的1还是第三排的1?不知道。@user3004656,这与我在评论中给你的答案完全相同。然而,Kaushal付出了额外的努力为您构建了一个完整的示例。