0

我有一张桌子

2010-4-16 199

2010-4-19 310

2010-4-20 229

2010-4-21 275

2010-4-22 64

2010-4-23 504

2010-4-26 631

2010-4-27 565

2010-4-28 286

理想的结果是:

2010-16 199

2010-17 310

...

我想查询每周分组数据的第一个值,查询如下:

 select distinct(to_char(date1,'yyyy-mm-w')) b,
first_value(a) OVER 
(partition by  distinct(to_char (date1,'yyyy-mm-w'))
 order by date1
range BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING )  c,

from t4

关于这个问题的正确解决方案是什么?我可以查询数据,但不能查询我想要的实际结果。结果之前引用的sql查询的结果是

2010-16 199

2010-17 504

但不幸的是不是我想要的。

需要帮忙。

4

1 回答 1

0

通过使用您的查询稍作修改::

 select distinct to_char(dt,'yyyy-iw') b,
first_value(num) OVER 
(partition by to_char (dt,'yyyy-iw')
 order by dt range BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING )  c
from tbl
order by 1;

你得到像这样的o/p::

B   C
2010-04-15  199
2010-04-16  310
2010-04-17  631

您想根据该日期的总周数对数据进行分组。

请参阅我已使用选项“iw”来获得此结果。

于 2012-12-12T12:38:49.660 回答