前年比を表示するSQL文

前年比

前回、実用新案のランキング(2015)を投稿したときは、SELECT文で年ごとのランキングを出して、Excelで加工していました。しかし、あまりにも手間がかかるので今後利用できないことを鑑みて、SQL文でデータを得られないか検討してみました。

SQL文

データベースのテーブル(umt)は、少なくとも以下の項目を有するものとします。

  • 事務所ID
  • 公開日

公開日から、Left(umt.公開日, 4) で、年数が取得できます。あっ、今、気づいたのですがYear()でよいですよね。あとで検証します。(追記: 大丈夫でした。というかまずそちらが先に思い浮かべるべきですね)

Select A.*, B.count2
From (Select Count(umt.事務所ID) As count1, umt.事務所ID, Year(umt.公開日) As 年
 From umt
 Where Left(umt.公開日, 4) = Year(CurDate())
 Group By umt.事務所ID) As A Left Join
 (Select Count(umt.事務所ID) As count2, umt.事務所ID, Year(umt.公開日) As 年
 From umt
 Where Year(umt.公開日) = Year(CurDate()) - 1
 Group By umt.事務所ID) As B On A.事務所ID = B.事務所ID
Where A.年 = Year(CurDate())
Order By A.count1 Desc, A.事務所ID Desc

要は、同じテーブルをWhereで2016年(Year(CurDate())により取得)のものと2015年のものとにして、クエリーをJOINしてみたこと。もっと改善の余地があるのかもしれませんが、SQL初心者としては、ここまで。良いSQL文があればコメント等でご教示ください。

終わりに

とりあえずできただけで、この情報をアップできておりません。情報が年毎に充実してきたら差分をどんどん出していきたいと思っております。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Caché SQL

前の記事

CachéのODBC設定
Caché SQL

次の記事

SQL文の生成