2017-02-22 3 views
2

私はこのコードを実行しようとしていますが、私は全く理解できないrow_number()表現で何かを逃していると言います。ORA - 00936エラー2行目に欠けているものを見つけることができません

with summary as 
(select s.city, length(s.city) as C_length, 
row_number() over (partition by length(s.city), order by s.city) 
as r1 from station s 
where 
length(s.city) = (SELECT min(LENGTH(s1.CITY)) FROM STATION s1) 
or length(s.city) = (SELECT max(LENGTH(s2.CITY)) FROM STATION s2)) 
select su.city, su.C_length 
from summary su; 
+0

あなたは 'r1'を使用していないので、計算する必要はありません。 –

答えて

2

partition by句とorder by句の間にコンマがあるべきではありません。ちょうどそれを削除し、[OK]を次のようになります。

row_number() over (partition by length(s.city) order by s.city) 
-- Comma removed here ------------------------^ 
+1

ありがとうございます。それを行います – Vish

1

はあなたのクエリを簡素化することができます。

with summary as (
     select s.city, length(s.city) as C_length, 
      min(length(s.city)) over() as min_length, 
      max(length(s.city)) over() as max_length, 
     from station s 
    ) 
select su.city, su.C_length 
from summary su 
where c_length in (min_length, max_length); 

それが使用されていないので、私はr1を削除しました。

+0

ありがとうございます。 min(length(s.city))over()はmin_lengthとして機能しますか? あなたはsuringと呼ばれるfuntionを "over()"で説明できますか? – Vish

+1

@ Vish。 。 。私はあなたのコメントを理解していません。コードはかなり明白です:すべてのデータにわたって都市の最小長さを計算しています。 –

+0

私はパサンシェがそれの中に何かを包んでいないことを意味しましたか? – Vish

関連する問題