计算 MySQL 中的频率

Calculating frequency in MySQL

我正在创建一个图书馆数据库,有四个 table 如下;

我一直在研究计算 MySQL 中频率的方法,但在经历了如此长的时间和误解之后,我决定尝试获取一个如何计算 [=47= 中频率的示例] 我会理解的。下面是我目前使用的四个 table。

我希望计算每本已借出 2 次或更多次的书籍的借阅频率。通过这样做,我可以了解计算频率在以下情况下的工作原理select输入特定值而不是所有值。

通过查看我的 tables,我将不得不 select 来自贷款 table 的 'code',select 所有出现两次或更多然后锻炼发生的频率。

根据我的研究,我会决定使用 INNER JOIN 连接 tables,使用 COUNT 来计算值的数量,使用 GROUP BY 来对值进行分组,并且不能使用 HAVING as WHERE。我在编写查询时遇到问题,并且不断地发现错误。谁能用上面的例子来解释他们是如何计算出每本书被借出两次或更多次的频率的?提前致谢

Table 1 - 本书

isbn title author 111-2-33-444444-5 Pro JavaFX Dave Smith 222-3-44-555555-6 Oracle Systems Kate Roberts 333-4-55-666666-7 Expert jQuery Mike Smith

Table 2 - 复制

code isbn duration 1011 111-2-33-444444-5 21 1012 111-2-33-444444-5 14 1013 111-2-33-444444-5 7 2011 222-3-44-555555-6 21 3011 333-4-55-666666-7 7 3012 333-4-55-666666-7 14

Table 3 - 学生

no name school embargo 2001 Mike CMP No 2002 Andy CMP Yes 2003 Sarah ENG No 2004 Karen ENG Yes 2005 Lucy BUE No

Table 4 - 贷款

code no taken due return 1011 2002 2015.01.10 2015.01.31 2015.01.31 1011 2002 2015.02.05 2015.02.26 2015.02.23 1011 2003 2015.05.10 2015.05.31 1013 2003 2014.03.02 2014.03.16 2014.03.10 1013 2002 2014.08.02 2014.08.16 2014.08.16 2011 2004 2013.02.01 2013.02.22 2013.02.20 3011 2002 2015.07.03 2015.07.10 3011 2005 2014.10.10 2014.10.17 2014.10.20

您没有指定频率类型,但此查询计算每本在 2014 年被借出超过一次的图书每周的借出次数:

select  b.isbn
,       b.title
,       count(*) / 52 -- loans/week
from    loan l
join    copy c
on      c.code = l.code
join    book b
on      b.isbn = c.isbn
where   '2014-01-01' <= taken and taken < '2015-01-01'
group by
        b.isbn
,       b.title
having  count(*) > 1 -- loaned more than once