结果在oracle 11g中的聚合函数

时间:2014-03-30 04:09:24

标签: oracle11g oracle-sqldeveloper database-administration

任何人都可以告诉我,对于相同的值,聚合函数max的结果是什么? 假设我有一个creation_date列,其中包含日期为varchar2。如果我尝试max(creation_date)将会产生什么结果以及如何选择row.Is如果在where子句子查询中使用它,行是否可预测?

完整的查询就是这个。

从my_table创建id,其中create_date =(从我的表中选择max(create_date));

1 个答案:

答案 0 :(得分:1)

不太确定你想要实现的目标。 我们假设有一个表my_table,其中包含如下所示的数据。 (注意最后两行在日期列中具有相同的数据)

SQL> select * from my_table;

 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

如果您执行select * from my_table where create_date_varchar=(Select max(create_date_varchar) from my_table);,那么您将获得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 select * from my_table where create_date_varchar=(Select max(create_date_varchar) from my_table) and ROWNUM = 1; 然后你会得到1条记录(3或4中的任何一条,这可以通过使用订单条款来控制)

检查:http://sqlfiddle.com/#!4/8d75a/3

参考Max Function 要了解有关排序工作原理的更多信息,请参阅NLS_SORTWhy does Oracle's varchar sort order not match the behavior of varchar comparison?