簡體   English   中英

在一個 MySQL 查詢中跨多個字段/表獲取不同的值計數

[英]Getting Distinct Value Counts Across Multiple Fields/Tables in One MySQL Query

我有一個名為visits的表,其中包含以下link_ididbrowsercountryreferer

現在,這基本上記錄了某個鏈接的訪問,並在數據庫中插入了訪問該鏈接的人的瀏覽器、國家和引用者

現在我需要顯示每個鏈接的統計信息

我使用以下查詢來獲取所有瀏覽器

SELECT browser, COUNT(browser) FROM visits GROUP BY browser

這產生了類似的東西

Browser Count(Browser) Internet Explorer | 5 Chrome | 3

現在這僅對瀏覽器按預期工作,但我正在尋找一種方法來計算單個查詢中所有出現的referersbrowserscountries

有沒有辦法做到這一點?

要計算數據庫中值的多個不同出現次數,只需一個查詢就可以很容易地完成。

請記住, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM