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