繁体   English   中英

用于monetdb的SQL中的变量

[英]variables in SQL for monetdb

我很困惑在MonetDB中是否可以使用标志符变量。 它是标准SQL还是仅mySQL? (见例如这个答案在这里SO)MonetDB声称支持SQL:2003(全功能列表在这里 ,我很难解析),但是是他们在说什么变数。

在MonetDB中,以下行因抱怨意外符号而失败: 但是有办法进行这项工作吗? 我看不到将SET (在DECLARE之后)与SELECT

SELECT @firstq := QUANTILE(share26_2007,0.25) FROM sys.share26_2007;

(然后,以下是预期的用例:)

SELECT peorglopnr, CASE WHEN share26_2007 < @firstq THEN 1

正如注释中已经指出的那样, @变量不是标准的SQL。

使用DECLARESET将起作用:

DECLARE firstq double;
SET firstq = ( SELECT quantile(share26_2007, 0.25) FROM share26_2007 );

SELECT peorglopnr, CASE WHEN share26_2007 < firstq THEN 1 .....

笔记:

  • 我从您的示例中了解到,您有一个表share26_2007 ,该表具有一列share26_2007 我遵循这个假设。
  • 我将变量firstq声明为double 您的示例未指定列share26_2007的类型。 相应地更改变量类型。
  • 将变量的值设置为返回原子值的SELECT的结果时,确实需要在SELECT周围加上括号。
  • 目前, quantile在MonetDB中似乎无法正常工作(请参阅https://www.monetdb.org/bugzilla/show_bug.cgi?id=4076 ),但这与您的问题无关。 上面的语法有效(您可能要通过用sys.quantile替换quantile来验证这sys.quantile

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM