MYSQL用户统计查询帮助?

时间:2010-10-22 21:38:49

标签: mysql date statistics distinct

我有一个表(统计信息),其中包含用户,日期(日期时间),页面和IP列。 我有这个问题:

SELECT * FROM statistics WHERE page LIKE '%page_name' ORDER BY date DESC LIMIT 30.

可以显示访问该页面的所有用户。但我想每天显示独特的ips,例如DISTINCT ip (per day) 我不知道如何添加'每日'部分......

任何想法? :)

2 个答案:

答案 0 :(得分:0)

这样的事情应该做的工作

SELECT COUNT(ip), DATE_FORMAT(date, '%Y-%m-%d') AS day
FROM statistics WHERE page LIKE '%page_name'
GROUP BY day ORDER BY day DESC LIMIT 30

答案 1 :(得分:0)

如果要显示唯一IP的数量,可以使用MySQL的GROUP BY

SELECT COUNT(DISTINCT(ip)), DATE(date)
FROM statistics
GROUP BY date
ORDER BY date DESC

如果您想要每个日期的所有唯一IP列表,您需要在检索完所有IP后对它们进行分组,例如

$sql = "SELECT DISTINCT(ip) AS ip, DATE(date)
        FROM statistics
        ORDER BY date DESC";
$res = mysql_query($sql);
$ips = array();
while ($r = mysql_fetch_object($res)) {
  $ips[$r->date][] = $r->ip;
}

foreach ($ips as $date => $list) {
  // echo the $date
  foreach ($list as $ip) {
    // go through all the ips
  }
}