我试图随机抽样一个星期的随机条目。为了确保我有平日和周末条目的余额,我已经勾勒出2个单独的sql语句,如下所示:
select * FROM admin.acct_activity
where RANDOM() <=1
--weekday
and extract(day from page_hit_ts) Between 6 and 10
limit 500
UNION all
SELECT *
FROM admin.acct_activity
where RANDOM() <=1
--weekend
and extract(day from page_hit_ts) Between 11 and 12
limit 200
/* to-do
1. limit results for each query
2. order query results by date*/
错误信息是:
"all" (at char 121) expecting a keyword (State:42000, Native Code: 1B)
这是在Netezza SQL(NZSQL)
中第一个select语句中的limit语句似乎会导致错误。有什么提示吗?
答案 0 :(得分:3)
我认为你可以用括号做到这一点:
(select *
FROM admin.acct_activity
where RANDOM() <=1 and extract(day from page_hit_ts) Between 6 and 10
limit 500
)
UNION all
(SELECT *
FROM admin.acct_activity
where RANDOM() <=1 and extract(day from page_hit_ts) Between 11 and 12
limit 200
)
如果没有,你肯定可以用子查询来做到这一点:
select t.*
from ((select *
FROM admin.acct_activity
where RANDOM() <=1 and extract(day from page_hit_ts) Between 6 and 10
limit 500
)
UNION all
(SELECT *
FROM admin.acct_activity
where RANDOM() <=1 and extract(day from page_hit_ts) Between 11 and 12
limit 200
)
) t
答案 1 :(得分:1)
每个查询只能设置一个LIMIT
语句。您应该将每个有限查询放入临时表,然后UNION ALL
临时表。