0

我正在为图书馆开发图书预订系统。在预订表中有以下字段:id_reservation、id_user、id_book、日期时间。

id_user 具有特定格式,例如:2009897652。前四位数字表示用户在系统中注册的年份。所有用户均于 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 回答