Mysql monetdb的SQL中的变量

Mysql monetdb的SQL中的变量,mysql,sql,variables,select,monetdb,Mysql,Sql,Variables,Select,Monetdb,我不知道at符号变量是否能在MonetDB中工作。它是标准SQL还是仅mySQL?请参见下面的答案。MonetDB声称支持SQL:2003完整功能列表,这对我来说很难解析,但这是他们在变量上所说的 MonetDB中的以下行失败,原因是出现了意外符号:。但是有没有办法得到这份工作呢?我认为没有办法在DECLARE和SELECT之后组合一个集合 之后,以下是预期用例: SELECT peorglopnr, CASE WHEN share26_2007 < @firstq THEN 1 正如注

我不知道at符号变量是否能在MonetDB中工作。它是标准SQL还是仅mySQL?请参见下面的答案。MonetDB声称支持SQL:2003完整功能列表,这对我来说很难解析,但这是他们在变量上所说的

MonetDB中的以下行失败,原因是出现了意外符号:。但是有没有办法得到这份工作呢?我认为没有办法在DECLARE和SELECT之后组合一个集合

之后,以下是预期用例:

SELECT peorglopnr, CASE WHEN share26_2007 < @firstq THEN 1

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

使用DECLARE和SET将起作用::

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周围确实需要括号。 此时分位数在MonetDB中似乎不能正常工作,请参见,但这与您的问题无关。以上语法有效,您可能希望通过将quantile替换为sys.quantile来验证这一点
标准SQL中没有变量。SQL标准仅为过程语言SQL/PSM定义变量。@a_horse_,没有名称,谢谢-那么您了解如何/是否可以将SET与SELECT一起使用吗?monetdb示例是关于手动使用值设置声明变量,而不是使用查询结果…我没有使用monetdb的经验。但是如果手册上这么说的话,我会相信手册。@a_horse_和_no_name任何与SET有关的经验都会有所帮助,文档中没有排除任何这一点,只是使用了一个更简单的示例。当然,谢谢你了!
DECLARE firstq double;
SET firstq = ( SELECT quantile(share26_2007, 0.25) FROM share26_2007 );

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