我有一個包含 id 和 distance 列的資料庫。我需要計算一定距離之間的 id 數量。
例如,我想計算距離在 1km 到 2km 之間有多少個 id,所以我使用了以下代碼:
SELECT COUNT (distance)
FROM table
WHERE distance BETWEEN 1000 AND 2000
-- Returns a COUNT of 240,600
當我想計算 2km 和 3km 之間的 id 數量并且我使用相同的查詢時,但是“2km”值在兩個查詢中都被計算在內,因為 BETWEEN 運算子是包含在內的。
SELECT COUNT (distance)
FROM table
WHERE distance BETWEEN 2000 AND 3000
-- Returns a COUNT of 353,440
據我了解,上面的兩個查詢都將包含距離正好為 2000 的行。
我很想知道是否有另一種方法來計算距離(并且有很多行)或者我是否需要 GROUP BY 然后計數?
uj5u.com熱心網友回復:
你可以嘗試這種事情來得到一個直方圖表
SELECT DIV(distance, 1000) * 1000 distance_from,
(DIV(distance, 1000) * 1000) 999 distance_to,
COUNT(*) num
FROM mytable
GROUP BY DIV(distance, 1000) * 1000
表達DIV(distance, 1000)創建當你使用它的距離值的組GROUP BY。
正如您所發現的,BETWEEN對于處理數字范圍的用處有限。您可能需要distance >= 1000 AND distance < 2000范圍 [1000, 2000)。
uj5u.com熱心網友回復:
根據 SQL 規范,這個運算式:
WHERE distance BETWEEN 1000 AND 2000
與:
WHERE distance >= 1000 AND distance <= 2000
據我了解,您需要=從端點之一中洗掉以創建互斥范圍。根據您對1 公里和 2 公里之間的定義,應使用以下一組條件之一:
WHERE distance >= 0 AND distance < 1000
WHERE distance >= 1000 AND distance < 2000
WHERE distance >= 2000 AND distance < 3000
或者
WHERE distance <= 1000
WHERE distance > 1000 AND distance <= 2000
WHERE distance > 2000 AND distance <= 3000
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/377392.html
標籤:mysql sql PostgreSQL的 间隔 之间
上一篇:獲取每個用戶角色的數量
下一篇:在MYSQL中向表中添加新資料
