Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一周的日平均值_Php_Mysql_Sql - Fatal编程技术网

Php 一周的日平均值

Php 一周的日平均值,php,mysql,sql,Php,Mysql,Sql,我试图在下面的查询中得到一周内每天的平均值 SELECT AVG(`Carbs`) As Carbs, AVG(`Sugar`) As Sugar, AVG(`Units`) As Units, DATE_FORMAT(`TrackedOn`, '%m/%d/%Y') As Date FROM `Tracking` WHERE `TrackedOn` BETWEEN ADDDATE(NOW(), INTERVAL -7 DAY) AND NOW() 然而,它只返回了我1天的平均值(但我认为它平

我试图在下面的查询中得到一周内每天的平均值

SELECT AVG(`Carbs`) As Carbs, AVG(`Sugar`) As Sugar, AVG(`Units`) As Units,
DATE_FORMAT(`TrackedOn`, '%m/%d/%Y') As Date
FROM `Tracking`
WHERE `TrackedOn` BETWEEN ADDDATE(NOW(), INTERVAL -7 DAY) AND NOW()
然而,它只返回了我1天的平均值(但我认为它平均了这1周的所有内容,并且只显示了第一天)

你能帮我做到这一点吗

以下是一些具有表结构的虚拟数据:

--
-- Table structure for table `Tracking`
--

DROP TABLE IF EXISTS `Tracking`;
CREATE TABLE IF NOT EXISTS `Tracking` (
  `TrackID` bigint(20) NOT NULL AUTO_INCREMENT,
  `UserID` bigint(20) NOT NULL,
  `TrackType` int(11) NOT NULL,
  `Carbs` decimal(10,3) NOT NULL,
  `Sugar` decimal(10,3) NOT NULL,
  `Units` decimal(10,3) NOT NULL,
  `TrackedOn` datetime NOT NULL,
  `TrackLocation` geometry NOT NULL,
  PRIMARY KEY (`TrackID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

--
-- Dumping data for table `Tracking`
--

INSERT INTO `Tracking` (`TrackID`, `UserID`, `TrackType`, `Carbs`, `Sugar`, `Units`, `TrackedOn`, `TrackLocation`) VALUES
(1, 3, 1, 36.000, 217.000, 9.343, '2013-08-06 17:38:37', ''),
(2, 3, 1, 36.000, 316.000, 12.171, '2013-08-06 17:40:23', ''),
(3, 3, 4, 12.000, 316.000, 7.671, '2013-08-06 17:42:24', ''),
(4, 3, 5, 0.000, 316.000, 6.171, '2013-08-06 18:01:53', ''),
(5, 3, 5, 0.000, 317.000, 6.200, '2013-08-07 08:25:06', ''),
(6, 3, 2, 89.000, 317.000, 21.033, '2013-08-07 08:25:13', ''),
(7, 3, 5, 0.000, 317.000, 6.200, '2013-08-07 08:27:19', ''),
(8, 3, 3, 82.000, 168.000, 12.193, '2013-08-07 08:27:31', ''),
(9, 1, 3, 86.000, 217.000, 13.000, '2013-08-07 08:28:08', ''),
(10, 3, 5, 0.000, 317.000, 6.200, '2013-08-07 09:13:39', '');

我的目标是返回从今天(现在())到7天前的
碳水化合物
单位
的日平均值。

你走上了正确的轨道。由于
avg()
是一个聚合函数,它将计算值并显示为一。如果你想得到每天的平均值。您需要应用
group by
子句。 看一看

在这里,您可以尝试以下方式:

SELECT AVG(`Carbs`) As Carbs, AVG(`Sugar`) As Sugar, AVG(`Units`) As Units,
DATE_FORMAT(`TrackedOn`, '%m/%d/%Y') As Dates
FROM `Tracking`
WHERE `TrackedOn` BETWEEN ADDDATE(NOW(), INTERVAL -7 DAY) AND NOW()
GROUP BY Dates;

你在正确的轨道上。由于
avg()
是一个聚合函数,它将计算值并显示为一。如果你想得到每天的平均值。您需要应用
group by
子句。 看一看

在这里,您可以尝试以下方式:

SELECT AVG(`Carbs`) As Carbs, AVG(`Sugar`) As Sugar, AVG(`Units`) As Units,
DATE_FORMAT(`TrackedOn`, '%m/%d/%Y') As Dates
FROM `Tracking`
WHERE `TrackedOn` BETWEEN ADDDATE(NOW(), INTERVAL -7 DAY) AND NOW()
GROUP BY Dates;

只需在查询的末尾添加
groupbydate\u格式(TrackedOn,'%m/%d/%Y')
,MySQL将按天汇总所有内容:

SELECT AVG(`Carbs`) As Carbs, AVG(`Sugar`) As Sugar, AVG(`Units`) As Units,
DATE_FORMAT(`TrackedOn`, '%m/%d/%Y') As Date
FROM `Tracking`
WHERE `TrackedOn` BETWEEN ADDDATE(NOW(), INTERVAL -7 DAY) AND NOW()
GROUP BY DATE_FORMAT(TrackedOn, '%m/%d/%Y')

只需在查询的末尾添加
groupbydate\u格式(TrackedOn,'%m/%d/%Y')
,MySQL将按天汇总所有内容:

SELECT AVG(`Carbs`) As Carbs, AVG(`Sugar`) As Sugar, AVG(`Units`) As Units,
DATE_FORMAT(`TrackedOn`, '%m/%d/%Y') As Date
FROM `Tracking`
WHERE `TrackedOn` BETWEEN ADDDATE(NOW(), INTERVAL -7 DAY) AND NOW()
GROUP BY DATE_FORMAT(TrackedOn, '%m/%d/%Y')

您需要按日期分组。尝试将
按日期分组\u格式(
TrackedOn
,'%m/%d/%Y')
添加到查询的末尾。是的,刚才有一段时间,在您发表评论之前尝试了一下,效果很好。。。在我确认之前,我需要更多的虚拟数据,所以请给我一点。将此作为答案发布,尽管ok?已确认,效果如预期。谢谢Ed。如果你把它作为一个答案贴出来,我会让它被接受的?想发布答案吗?谢谢你的提醒!我以前想那样做,但忘了。我已经发布了我的评论作为答案。你需要按日期分组。尝试将
按日期分组\u格式(
TrackedOn
,'%m/%d/%Y')
添加到查询的末尾。是的,刚才有一段时间,在您发表评论之前尝试了一下,效果很好。。。在我确认之前,我需要更多的虚拟数据,所以请给我一点。将此作为答案发布,尽管ok?已确认,效果如预期。谢谢Ed。如果你把它作为一个答案贴出来,我会让它被接受的?想发布答案吗?谢谢你的提醒!我以前想那样做,但忘了。我已经发布了我的评论作为回答。