[英]Getting Distinct Value Counts Across Multiple Fields/Tables in One MySQL Query
我有一個名為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
。
有沒有辦法做到這一點?
要計算數據庫中值的多個不同出現次數,只需一個查詢就可以很容易地完成。
請記住, SELECT COUNT(tablename)
的列標題僅返回一列,只有一個數值。 對於每個不同的值(來自GROUP BY
子句),您有兩列:值、計數。 要計算不同的字段,您需要三個:Field、Value、Count,如果要計算不同表中的不同字段,則需要四個:Table、Field、Value、Count。
觀察我如何將下面的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 |
+-------------------+----------------+----------+--------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.