-1

私は何時間もこの問題を解決しようとしてきました。私の数値は約1年ずれています。誰かが私が間違っていることを教えてもらえますか?

質問と予想される結果は次のとおりです。 ここに画像の説明を入力 市外局番 203 からの学生名と、登録してからの年数のリストを作成します (すべての値で小数点以下 2 桁を表示します)。年数の多い順にリストを並べ替えます。

ここに私のコードと結果があります:

SELECT First_Name,
       Last_Name,
       TO_CHAR((ROUND(SYSDATE - registration_date) / 365), '9.99') AS YEARS
FROM Student
WHERE Phone LIKE '203-%%%-%%%%' 
ORDER BY  Years DESC  ;

ここに画像の説明を入力

4

1 に答える 1

2

クエリは現在の日付に基づいているため、指定されたデータの固定値を使用すると、質問のサンプル出力とは異なることが予想されます。その出力は、質問が設定され、クエリが実行されたとき (その日の日付に関係なく) に基づいています。(どうやら 2013-06-03 、ここにあるスキーマ ビルドの調整されたサブセットを使用)。

たとえば、2007 年 2 月 2 日の登録日は 6.34 年前ですが、現在は 1.33 年後なので、同じクエリに対して今日は 7.67 という回答が得られます。

結果が与えられたものと正確に一致する必要があると想定していますが、実際にはそれがあるべき形式を示しているだけです。正確な年数は異なると予想する必要があります。したがって、クエリは間違っていません。質問を少し誤解しています。

またROUND、クエリが午前または午後に実行されると、わずかに異なる結果が得られます。TRUNC(sysdate)時間部分を無視するために使用する方がより一般的です。コメントに指摘されているように、ワイルドカードの使用法が間違っているため、単に使用できますLIKE '203-%'

于 2014-10-01T08:06:18.217 に答える