Php MySQL随时间变化的不同(唯一)值
我有一个关于构造MySQL查询的问题。我有一个表,其中一列包含值,另一列包含时间戳。我想做的是得到一个字段从特定历元到不同时间点的不同(唯一)值的数量,这样我就可以绘制出一段时间内唯一值的数量。例如,我希望查询结果如下所示:Php MySQL随时间变化的不同(唯一)值,php,mysql,timestamp,distinct,Php,Mysql,Timestamp,Distinct,我有一个关于构造MySQL查询的问题。我有一个表,其中一列包含值,另一列包含时间戳。我想做的是得到一个字段从特定历元到不同时间点的不同(唯一)值的数量,这样我就可以绘制出一段时间内唯一值的数量。例如,我希望查询结果如下所示: 日期,计数(不同的col1) 2011-02-01,10 2011-02-0216 2011-02-0324 等等 请注意,这些值是从同一时间点开始的不同值的数量。目前,为了实现这一点,我在PHP中使用一个循环来迭代每个日期的单个查询,因为我有一个很大的数据库,所以这需要花
日期
,计数(不同的col1
)2011-02-01,10
2011-02-0216
2011-02-0324
等等 请注意,这些值是从同一时间点开始的不同值的数量。目前,为了实现这一点,我在PHP中使用一个循环来迭代每个日期的单个查询,因为我有一个很大的数据库,所以这需要花费很长时间。为了更好地描述,我要替换的低效代码如下所示:
for($i=0;$i<count($dates),$i++){
$qry = "SELECT COUNT (DISTINCT `col1`) FROM `db`.`table` WHERE `Date` BETWEEN '".$EPOCH."' AND '".$dates[$i]."';";
}
对于($i=0;$i如果理解您的问题,您可以使用组语句:
SELECT StampCol, COUNT(DISTINCT DataCol) FROM MyTable GROUP BY StampCol
您需要使用该解决方案计算PHP中的计数。谢谢,但此查询将给出每天的计数(我还需要不同的值)。我正在寻找一个查询,其中计数包括在StampCol
日期之前的所有DataCol
值。通过这种方式,我可以跟踪uniqueDataCol
随时间的增长,而不是每个给定的StampCol
的uniqueDataCol
。是的,但通过分组,一个日期组的唯一值将被忽略ted仅在该日期组的范围内是唯一的,并且计数将是“如果理解您的问题,您可以使用组声明:…”的越位注释。这是很古老的,但对于后代来说,这个答案应该有效:
SELECT DATE_FORMAT(date_column, "%Y-%m-%d") AS date_column, COUNT(visitors) AS visitors FROM table GROUP BY DATE_FORMAT(date_column, "%Y-%m-%d") ORDER BY date_column desc"