我有一个名为visits
的表,其中包含以下内容
link_id
,id
,browser
,country
,referer
现在,这基本上记录了某个链接的访问,并插入了访问数据库中该链接的任何人的浏览器,国家和参考者
现在我需要显示每个链接的统计信息
我使用以下查询来获取所有浏览器
SELECT browser, COUNT(browser) FROM visits GROUP BY browser
产生类似
的东西 Browser Count(Browser)
Internet Explorer | 5
Chrome | 3
现在这只适用于浏览器,但我正在寻找一种方法来计算referers
,browsers
和countries
有办法做到这一点吗?
答案 0 :(得分:0)
要对数据库中多个不同的出现值计数进行计数,只需一个查询就可以很容易地完成
。请记住,SELECT COUNT(tablename)
中的列标题仅返回一列,并且仅返回一个数值。对于每个不同的值(来自GROUP BY
子句),您都有两列:值,计数。要对不同的字段进行计数,您将需要三个:字段,值,计数,如果要对不同表中的不同字段进行计数,则将需要四个:表,字段,值,计数。
观察下面的UNION
我如何用于两个不同的表:
SELECT
"Table1" AS TableName,
"Field1" AS Field,
Field1 AS Value,
COUNT(Field1) AS COUNT
FROM Table1
GROUP BY Value
UNION
SELECT
"Table2" as TableName,
"Field2" as Field,
Field2 as Value,
COUNT(Field2) AS COUNT
FROM Table2
GROUP BY Value
您会注意到我需要使用别名:"Table2" as TableName
,这是因为UNION
列应具有匹配的列标题。
因此您可以直观地看到返回的结果,看看:
+-------------------+----------------+----------+--------+
| TableName | Field | Value | COUNT |
+-------------------+----------------+----------+--------+
| ItemFee | PaymentType | | 228 |
| ItemFee | PaymentType | All | 1 |
| ItemFee | PaymentType | PaidOnly | 1 |
| Person | Presenter | | 692258 |
| Person | Presenter | N | 590 |
| Person | Presenter | Y | 8103 |
+-------------------+----------------+----------+--------+