Mysql:查询日期范围的平均值、最大值和最小值

Mysql:查询日期范围的平均值、最大值和最小值,mysql,Mysql,我有一个只有三个字段的表: userID (integer, key, autoincrement) date (Y-m-d format) hits (integer) 在其中,我每天填充数据(userID和date是唯一的),因此我有如下值: 1 | '2016-01-01' | 200 1 | '2016-01-02' | 289 2 | '2016-01-15' | 389 2 | '2016-01-16' | 390 .... 我怎样才能得到: 上周的平均每日点击率 上个月的平均

我有一个只有三个字段的表:

userID (integer, key, autoincrement)
date (Y-m-d format)
hits (integer)
在其中,我每天填充数据(userID和date是唯一的),因此我有如下值:

1 | '2016-01-01' | 200
1 | '2016-01-02' | 289
2 | '2016-01-15' | 389
2 | '2016-01-16' | 390
....
我怎样才能得到:

  • 上周的平均每日点击率
  • 上个月的平均每周点击率
  • 上周的最大每日点击量
  • 上周的最小每日点击量
t h n k s

SELECT AVG(hits) FROM table WHERE date BETWEEN 'beginning' and 'end';
此处:“开始”是周或月的开始日期,格式为“yyyy-mm-dd”“结束”是相同的,但用于结束日期

SELECT MAX(hits) FROM table WHERE date BETWEEN 'beginning' and 'end';
SELECT MIN(hits) FROM table WHERE date BETWEEN 'beginning' and 'end';
示例:

SELECT AVG(hits) FROM table WHERE date BETWEEN '2016-01-01' and '2016-01-31';
SELECT MAX(hits) FROM table WHERE date BETWEEN '2016-01-01' and '2016-01-31';
此处:“开始”是周或月的开始日期,格式为“yyyy-mm-dd”“结束”是相同的,但用于结束日期

SELECT MAX(hits) FROM table WHERE date BETWEEN 'beginning' and 'end';
SELECT MIN(hits) FROM table WHERE date BETWEEN 'beginning' and 'end';
示例:

SELECT AVG(hits) FROM table WHERE date BETWEEN '2016-01-01' and '2016-01-31';
SELECT MAX(hits) FROM table WHERE date BETWEEN '2016-01-01' and '2016-01-31';

对于上周的平均每日点击量,请尝试执行以下操作:

SELECT date, AVG(hits) 
FROM table 
WHERE date <= '2016-03-19' AND date >= '2016-03-13' 
GROUP BY date
选择日期,平均(点击数)
从桌子上
其中日期='2016-03-13'
按日期分组

最大值和最小值,用“平均值”替换“最大值”或“最小值”。

对于上周的平均每日点击量,尝试执行以下操作:

SELECT date, AVG(hits) 
FROM table 
WHERE date <= '2016-03-19' AND date >= '2016-03-13' 
GROUP BY date
选择日期,平均(点击数)
从桌子上
其中日期='2016-03-13'
按日期分组

Max和Min,用“AVG”代替“Max”或“Min”。

编写查询将是一个好的开始。提示:使用函数。编写查询将是一个良好的开端。提示:使用函数。谢谢你。我没有澄清我的表存储了累积数据(很抱歉),因此:第1天包含直到第1天的数据,而不仅仅是第1天的数据。第2天包含第2天之前的计算数据。这样AVG会给我一个平均值,包括计算数据。有什么东西可以直接从mysql获取平均值、最大值或最小值吗?否则,我想我将需要获得每个时间段内的所有数据,然后用PHP计算平均值、最小值和最大值,方法是将每个日期的命中值减去它们的前辈。哦,如果我理解正确,那么您的实际日期输入(每个记录)与其他一些列中的数据不一一匹配。因此,例如,对于给定的日期,您有一个从其他日期“累积”的点击数。在这种情况下,我认为最好的解决方案是清理数据,以便更轻松地处理。最好的方法可能是改变数据库中填充数据的方式,以便以后可以更轻松地处理,或者编写一个脚本来“解析”数据(以防您已经有太多重要数据,而且您可能已经有了)。再次感谢@leoskhrnkv谢谢Leo。我没有澄清我的表存储了累积数据(很抱歉),因此:第1天包含直到第1天的数据,而不仅仅是第1天的数据。第2天包含第2天之前的计算数据。这样AVG会给我一个平均值,包括计算数据。有什么东西可以直接从mysql获取平均值、最大值或最小值吗?否则,我想我将需要获得每个时间段内的所有数据,然后用PHP计算平均值、最小值和最大值,方法是将每个日期的命中值减去它们的前辈。哦,如果我理解正确,那么您的实际日期输入(每个记录)与其他一些列中的数据不一一匹配。因此,例如,对于给定的日期,您有一个从其他日期“累积”的点击数。在这种情况下,我认为最好的解决方案是清理数据,以便更轻松地处理。最好的方法可能是改变数据库中填充数据的方式,以便以后可以更轻松地处理,或者编写一个脚本来“解析”数据(以防您已经有太多重要数据,而且您可能已经有了)。再次感谢@LeoSkhrnkv