簡體   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