sqlの質問です

表sales
year sale
1990 50
1992 50
1993 52
1994 55
1997 55
sql
select s2.year as pre_year,
s1.year as now.year,
s2.sale as pre_sale,
s1.sale as now_sale
from sales s1,sales s2
where s2.year = (select MAX(year)
from sales s3
where s1.year > s3.year
order by now_year
結果
pre_year now_year pre_sale now_sale
1990 1992 50 50
1992 1993 50 50
1993 1994 52 52
1994 1997 55 55
以上のクエリのMAX関数はなぜ必要なのでしょうか

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2016/11/21 07:25:59
  • 終了:2016/11/28 07:30:03

回答(1件)

id:degucho No.1

degucho回答回数258ベストアンサー獲得回数692016/11/21 21:55:00

今年が1997年の場合、
where s1.year > s3.year
の条件だと1990から1994年の4レコード全てが該当してしまい
単一行を期待する
where s2.year =
の条件と合わなくなってしまうからですね。
※ORDERの前に閉じ括弧要りますよね?

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません