php - mySQL 选择访问并按月显示所有?

标签 php mysql syntax

我现在正在努力学习 mySQL 查询和语法。我可以帮助实现以下目标:-

我有一个连续显示访问国家/地区的指标/分析表。我有以下查询:-

SELECT `country`, COUNT(`ip`) AS `cViews` FROM `metrics` WHERE `projID` = 'projID' AND `country` != 'XX' AND `when` BETWEEN '$dateFrom' AND '$dateTo' GROUP by country

注意; when 是时间戳字段。

它获取给定时间范围内每个国家/地区的访问次数。美好的。花花公子,有人可能会说。

我现在需要的是显示一个表格(忘了显示,我只需要查询方面的帮助),它可以将访问分组到每个月的标题下。 IE。每个月的国家/访问次数。可能使用“2009-06-00”和“2009-06-30”之间的时间戳指定,这些日期在顶部的变量中声明。

所以我需要从以下的倍数中获取:-

`id`   `ip`  `country`   `etc`
 1     24.124    uk    thisthat

致:-

`country`     `Jan`     `Feb`
 UK             44       77

等等

现在,我之前在这里得到过将名称声明为 AS 的帮助,但是这个查询的潜在复杂性让我感到害怕,我不太确定如何去做,即使是嵌套的选择查询也是如此。

非常感谢收到任何建议或指向正确方向的建议。

最佳答案

MySQL 有多个 date and time functions ,您可以使用它来解析时间戳字段以及分组依据(即,您想要计算特定月份某个国家/地区的所有记录,因此您可以按国家/地区和年/月分组)。例如,如果您按时间戳的年月分组:

SELECT `country`, COUNT(`ip`) AS `cViews`,
  YEAR(`when`) AS `year`, MONTH(`when`) AS `month`
FROM `metrics`
WHERE `projID` = 'projID'
  AND `country` != 'XX'
  AND `when` BETWEEN '$dateFrom' AND '$dateTo'
GROUP BY country, YEAR(`when`), MONTH(`when`)

你的结果集看起来像

country  cViews  year  month
UK       44      2009  7
UK       75      2009  6
 ...

然后您可以使用 PHP 将该数据组织成您想要的输出格式。

关于php - mySQL 选择访问并按月显示所有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1099528/

相关文章:

php - 如何设置 Node.js、PHP 和 MySQL 的开发环境

mysql - 如何 "insert into table (col1, col2) values (select max(id) from table2, select id from table3); "?

javascript - javascript中${}的含义

mysql - 同一列中的两个不同值作为单独的列返回相同的结果

c - 关于函数声明的问题

php - "->"是什么意思?

php - 如何在 Laravel 中使用多个数据库

php - 从 mysql 查询中翻转一个表并在 php 中输出

php - 如何在 PHP 中使用 curl 发送接受编码 header

mysql - 将 MySQL 条目排序为子项和父项