我正在为图书馆开发图书预订系统。在预订表中有以下字段:id_reservation,id_user,id_book,datetime。
id_user具有特定格式,例如: 2009897652 。 前四位数表示用户在系统中注册的年份。所有用户都在9月份注册(学校图书馆)。
我想计算用户注册年份的预订GROUP BY。 所以我必须找到今天和注册年9月之间的差异(年份整数)。
如何计算预订GROUP BY用户注册年份的任何帮助?
例如。
total_reservations| users_registered_years 200 | 1 220 | 2 320 | 3 400 | 4
非常感谢!!
答案 0 :(得分: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)
。