前年比を表示する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文があればコメント等でご教示ください。
終わりに
とりあえずできただけで、この情報をアップできておりません。情報が年毎に充実してきたら差分をどんどん出していきたいと思っております。