簡體   English   中英

sql 如何計算 select 行 = 值的多行數

[英]sql how to select count of multiple rows where row = value

嗨,我正在制作一個 sql select 來計算多行值,其中 Domain == 'whatever'。

目前我做了 5 個單獨的選擇,這些選擇需要很長時間才能加載並且效率低下,我問我是否以及如何 select 在一個查詢中計算多行的計數,或者至少比我現在做的更有效。

我正在嘗試 select 行數:路由、瀏覽器、設備、位置和引薦來源網址,其中域等於“任何”

我希望 output 以如下格式包含上面列出的所有行:rowname: {count: 1}

這是表格:

CREATE TABLE IF NOT EXISTS hits (
    ID INTEGER PRIMARY KEY AUTO_INCREMENT,
    Domain TEXT NOT NULL,
    Route TEXT NOT NULL,
    Timestamp INTEGER NOT NULL,
    Browser TEXT,
    Location TEXT,
    Device TEXT,
    Referrer TEXT
)

這些是我目前的選擇:

    routes = db.run('SELECT Route, COUNT(Route) AS count FROM hits WHERE Domain = %s AND Timestamp BETWEEN %s AND %s GROUP BY Route', (domain, d1, d2))

    browsers = db.run('SELECT Browser, COUNT(Browser) AS count FROM hits WHERE Domain = %s AND Timestamp BETWEEN %s AND %s GROUP BY Browser', (domain, d1, d2))

    locations = db.run('SELECT Location, COUNT(Location) AS count FROM hits WHERE Domain = %s AND Timestamp BETWEEN %s AND %s GROUP BY Location', (domain, d1, d2))


    screens = db.run('SELECT Device, COUNT(Device) AS count FROM hits WHERE Domain = %s AND Timestamp BETWEEN %s AND %s GROUP BY Device', (domain, d1, d2))


    referrals = db.run('SELECT Referrer, COUNT(Referrer) AS count FROM hits WHERE Domain = %s AND Timestamp BETWEEN %s AND %s GROUP BY Referrer', (domain, d1, d2))```

以下作品在SQL fiddle。 這個問題被標記為 mysql 和 python,所以如果您需要進一步的幫助,請進一步說明您使用的是什么引擎:

SELECT
  COUNT(Route) AS route_count, 
  COUNT(Browser) AS browser_count,
  COUNT(Location) AS location_count,
  COUNT(Device) AS device_count,
  COUNT(Referrer) AS referrer_count

FROM 
  hits 
WHERE 
  Domain = 'whatever'
  AND Timestamp BETWEEN '00:00' AND '12:00'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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