我现在正在努力学习 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/