sql - 在 NZSQL 中使用 limit with union all 时出错

标签 sql netezza

我试图在一周内对随机条目进行随机抽样。为了确保工作日和周末条目的平衡,我草拟了 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 语句似乎是导致错误的原因。有什么建议吗?

最佳答案

我想你可以用括号来做到这一点:

(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

关于sql - 在 NZSQL 中使用 limit with union all 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24288141/

相关文章:

sql - 如果该表包含相关数据,则 Netezza SQL 加入该表

c# - SQL数据读取器读取不一致

c# - INSERT INTO 如果不存在 SQL Server

python - 得到??将 Netezza 与 Python 连接时作为 unicode 字符的输出

mysql - 通过 Aginity Workbench for Netezza 导入 excel 文件时出错

sql - 显示具有 0 值的缺失行以维持顺序

sql - 所有值也是选项时的 Delphi 查询参数用法

MySQL:只左连接一行并求和

c# - 将数据类型 varchar 转换为 bigint 时出错。内联 sql 语句

sql - 使用给定的列和数据创建一个临时表