【发布时间】:2020-10-11 00:44:13
【问题描述】:
宇宙的奇妙编码员,我有一个问题:
我正在编写一个 HIVE SQL 脚本,我想知道是否可以在一个条件下交叉连接(下面的条件是星期几是星期五),或者是否有一个性能轻的替代方案我在下面做。 我只需要在周五的日期中添加 2 行,这只是周六和周日的周五日期数据的持久性。我在连接条件上收到错误,但我想知道是否有可能以某种方式绕过它。
为了清楚起见,下面编写查询的方式给了我一个错误(特别是 DAYOFWEEK(performance_end_date) = 6)。只是想知道是否有一种方法可以在语法被接受的地方写这个。
请指教。
select
portfolio_name
,Cast(Date_add(a.performance_end_date, crs.crs) AS TIMESTAMP) AS performance_end_date
,return
,nav
,nav_id
,row_no
from
(
SELECT portfolio_name, performance_end_date, return, cast(cast(nav as decimal(20,2))as string) as nav, nav_id
,row_number() over (partition by a.portfolio_code,a.performance_end_date order by a.nav_id desc) as row_no
FROM carsales a
WHERE
portfolio_code IN ('1994','2078','2155','2365','2367')
and
year=2020 and month=09
) a
CROSS JOIN (SELECT stack(2, 1,2) as crs) crs and DAYOFWEEK(performance_end_date) = 6
where a.row_no = 1
【问题讨论】:
标签: sql postgresql optimization hive hiveql