我正在尝试随机抽样一周内的条目。为了确保工作日和周末条目的平衡,我绘制了两个单独的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语句似乎导致了错误。有什么建议吗?
发布于 2014-06-18 22:38:09
我认为你可以用括号做到这一点:
(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发布于 2014-06-18 22:35:49
每个查询只能设置一条LIMIT语句。您应该将每个有限的查询放入一个临时表中,然后对临时表执行UNION ALL操作。
https://stackoverflow.com/questions/24288141
复制相似问题