[英]How to use the same column as check and condition in WHERE clause
是否可以根據條件中的確切列過濾列? 我需要計算每個生命周期中不同 ID 的數量。 例如,如果生命周期 = 10,我需要計算生命周期在 10 到 30 之間的所有唯一 ID。
如果我寫
SELECT
lifetime,
COUNT(DISTINCT id_ru) AS number
FROM lifetime_count
WHERE lifetime BETWEEN lifetime AND 30
GROUP BY 1
ORDER BY 1
LIMIT 15
例如,如果我像這樣硬編碼所需的生命周期價值,我會得到不同的結果
SELECT
COUNT(DISTINCT id_ru) AS number
FROM lifetime_count
WHERE lifetime BETWEEN 0 AND 30
SELECT
COUNT(DISTINCT id_ru) AS number
FROM lifetime_count
WHERE lifetime BETWEEN 1 AND 30
...
您還可以通過以下方式解決此問題:
COUNT
聚合函數為每個生命周期計算 id_ru 的不同值SUM
計算此計數的運行總和WITH cte AS (
SELECT lifetime,
COUNT(DISTINCT id_ru) AS cnt
FROM tab
GROUP BY lifetime
ORDER BY lifetime
)
SELECT lifetime,
SUM(cnt) OVER(ORDER BY lifetime DESC) AS cnt
FROM cte
ORDER BY lifetime
這是一個 MySQL演示,可以為您提供總體思路和一些可以玩的東西,盡管這些結構可以在任何 DBMS 中找到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.