-1
select CURRENCY.currencyname, currency.currencysymbol, COUNTRYNAME.currencycode, 
       currency.exchangerate
from CURRENCY,COUNTRYNAME
where currency.currencycode=COUNTRYNAME.currencycode
having currency.exchangerate >= max(currency.exchangerate)
group by CURRENCY.currencyname, currency.currencysymbol, 
         COUNTRYNAME.currencycode, currency.exchangerate;

これは私が得ている出力であり、最大為替レートのみを表示しようとしているため、間違っていることはわかっています。したがって、このクエリを解決するためのヘルプは非常に高く評価されます。私はオラクルのSQL開発者です

CURRENCYNAME         CURRENCYSYMBOL       CURRENCYCODE EXCHANGERATE
-------------------- -------------------- ------------ ------------
British Pound        £                    GBP                     1,
US Dollar            $                    USD                1.9626 ,
Danish Krone         kr                   DKK                9.9918 ,
Malaysian Ringgit    RM                   MYR               6.35392 ,
Euro                 €                    EUR               1.34076 ,
Indian Rupee         Rs                   INR               77.3265 ,
Japanese Yen         ¥                    JPY               209.881, 
4

3 に答える 3

0

以下を試してください

SELECT CURRENCY.currencyname, currency.currencysymbol, 
       COUNTRYNAME.currencycode, MAX(currency.exchangerate) as ExchangeRate
FROM CURRENCY
INNER JOIN COUNTRYNAME ON COUNTRYNAME.currencycode = currency.currencycode
GROUP BY CURRENCY.currencyname, currency.currencysymbol, COUNTRYNAME.currencycode;
于 2013-04-20T11:15:13.313 に答える
0

このクエリはおそらく次のように簡略化できます。

select max(currencyname), max(currencysymbol), currencycode, max(exchangerate)
from currency group by currencycode

(-どの国でも使用されたことのない通貨がないと仮定します。)

于 2013-04-20T11:21:54.827 に答える
0

お問い合わせについて...

1. MAX (集計) 値を同じクエリ レベル内のベース値と比較することはできません。派生テーブル (別名「サブクエリ」) を使用できます。

    c.currencyname、c.currencysymbol、n.currencycode、c.exchangerate を選択します。
    from CURRENCY c
    c.currencycode=n.currencycode で COUNTRYNAME n に参加
    where c.exchangerate = (通貨から max(exchangerate) を選択)

2. 上記から、JOIN を使用して 2 つのテーブルをリンクしていることに気付くでしょう。テーブル名のカンマ リストの使用は、ANSI-92 結合構文の出現により、約 21 年前に時代遅れになりました。

3. 表示されているクエリは機能していません。句は、句の後ではなく、GROUP BY前に属しHAVINGます。そうは言っても、上記のポイント 1 が適用され、MAX 値を (ベース) 列の値と比較することはできません。

于 2013-04-20T11:19:42.817 に答える