我正在创建一个图书馆数据库,并有四个表,如下所示;
我一直在研究在MySQL中计算频率的方法,但是经过很长时间和误解之后,我决定尝试举一个示例,说明如何在我会理解的表上计算频率。以下是我当前使用的四个表。
我希望锻炼已借出2次或更多次的每本书的借阅频率。通过这样做,我可以看到在选择特定值而不是所有值时,如何计算频率。
通过查看我的表,我将不得不从贷款表中选择“代码”,选择出现两次或多次的所有值,然后确定发生频率。
根据我的研究,我决定使用INNER JOIN连接表,使用COUNT计算值的数量,使用GROUP BY对值进行分组,并使用HAVING,因为可能不会使用WHERE。我在编写查询时遇到麻烦,并且不断发现错误。谁能用上面的例子来解释他们如何计算出每本书两次借出或两次借出的频率?提前致谢
表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
表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
表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
表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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句