计算 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
我正在创建一个图书馆数据库,有四个 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