【发布时间】:2011-12-19 22:24:03
【问题描述】:
我想从一张表的一行中获取最大值和最小值
例如,我在表 a 中有以下行:
Insert into TABLE1
(TRADE_DATE, COL_NAME, COL_VALUE, REC_COUNT)
Values
(TO_DATE('12/08/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'STOCK_SYM', 'A', 1210885);
Insert into TABLE1
(TRADE_DATE, COL_NAME, COL_VALUE, REC_COUNT)
Values
(TO_DATE('12/08/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'STOCK_SYM', 'AA', 1211091);
Insert into TABLE1
(TRADE_DATE, COL_NAME, COL_VALUE, REC_COUNT)
Values
(TO_DATE('12/08/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'STOCK_SYM', 'AAAA', 9);
Insert into TABLE1
(TRADE_DATE, COL_NAME, COL_VALUE, REC_COUNT)
Values
(TO_DATE('12/08/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'STOCK_SYM', 'AAAE', 1);
Insert into TABLE1
(TRADE_DATE, COL_NAME, COL_VALUE, REC_COUNT)
Values
(TO_DATE('12/08/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'STOCK_SYM', 'AABVF', 11);
Insert into TABLE1
(TRADE_DATE, COL_NAME, COL_VALUE, REC_COUNT)
Values
(TO_DATE('12/08/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'STOCK_SYM', 'AAC', 916);
Insert into TABLE1
(TRADE_DATE, COL_NAME, COL_VALUE, REC_COUNT)
Values
(TO_DATE('12/08/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'STOCK_SYM', 'AACAY', 2);
Insert into TABLE1
(TRADE_DATE, COL_NAME, COL_VALUE, REC_COUNT)
Values
(TO_DATE('12/08/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'STOCK_SYM', 'AACC', 2469);
Insert into TABLE1
(TRADE_DATE, COL_NAME, COL_VALUE, REC_COUNT)
Values
(TO_DATE('12/08/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'STOCK_SYM', 'AACOU', 66);
我想得到如下结果
col_val1 max_val col_val2 min_val
-------- ------- -------- ------
AA 1211091 AAAE 1
A 1210885 AACAY 2
AACC 2496 AAAA 9
AAC 916 AABVF 11
AACOU 66 AACOW 56
我试过min(col_value) over (partition by trade_date order by rec_count),但我只能得到最小值或最大值。当我创建两个表时,一个带有最小值,另一个带有最大值,并从中进行选择,我得到一个笛卡尔连接。
【问题讨论】:
-
您的样本数据在“col_val”列中没有任何重复值。一天的真实数据中会不会有不止一个AA?
-
在您的示例结果中,最大值和最小值是什么?是按日期吗?您的示例输入数据只有一个日期...