0

図書館の書籍予約システムを開発しています。予約のテーブルには、id_reservation、id_user、id_book、datetime というフィールドがあります。

id_user には特定の形式があります (例: 2009897652 )。最初の4 桁は、ユーザーがシステムに登録された年を示します。9月に全利用者登録(学校図書館)。

ユーザーが登録されている年数でグループごとに予約をカウントしたい。したがって、今日の日付と登録年の 9 月の差 (年の整数) を見つける必要があります。

ユーザーが登録されている年ごとにグループ化された予約をカウントする方法はありますか?

例えば。

総予約| users_registered_years
 200 | 1
 220 | 2
 320 | 3
 400 | 4  

どうもありがとう!!

4

1 に答える 1

1

なぜ年ごとにそれをしないのですか?

select left(id_user, 4) as year, count(*)
from reservations 
group by left(id_user, 4)
order by year;

その後、現在の年を差し引くことができます。

select year(now()) - left(id_user, 4) as diff, count(*)
from reservations 
group by left(id_user, 4)
order by diff;

このクエリをアプリケーションに入れる予定がない限り、結果を修正していつでも正しくする価値があるかどうかはわかりません。次に、ロジックは、のようにオフセットを追加するだけyear(now()) - left(id_user, 4) + (case when month(now()) >= 10 then 1 else 0 end)です。

于 2014-12-17T17:54:05.967 に答える