从访客柜台生成报告

时间:2014-06-21 08:07:49

标签: mysql sql

我有一个访客柜台,表格如下:

  id | country_code |       datetime         | Browser | ...
 ---------------------------------------------------------
  1  |    FR        |   2014-06-20 05:00:28  | FireFox |
  2  |    US        |   2014-06-20 05:00:28  | Chrome  |
  3  |    ZW        |   2014-06-20 05:00:28  | IE      |

我想计算某一天某小时内有多少访客(例如)。 查询如下所示:

SELECT HOUR(datetime), COUNT(*) as hits 
FROM counter_table WHERE datetime >= CURDATE() 
GROUP BY HOUR(datetime) WITH ROLLUP

此查询没问题。 但我也想知道我从某个国家有多少游客。

我试过像GROUP BY HOUR(datetime), country_code WITH ROLLUP这样的东西(我不需要每小时ROLLUP用于国家/地区,我需要每小时ROLLUP用于点击)或JOIN查询但我找不到一个好的解决方案。

我能想到的最好的事情是这样的:

SUM(IF(country_code = "AF", 1,0)) AS Afghanistan,
...
SUM(IF(country_code = "ZW", 1,0)) AS Zimbabwe

但问题是世界上有近400个国家。我不确定上面这么长的查询是否对性能有好处。不幸的是,在这种情况下,性能非常重要,因为表格很大。但除此之外,这个解决方案正是我想要的。

对于这类问题,可能还有比MySQL更好的数据库吗?

0 个答案:

没有答案