簡體   English   中英

MySQL:提取日期范圍在2到10之間的ID

[英]MySQL: Extract IDs with occurrence between 2 and 10 in a date range

我的桌子XX約有25列。 我只需要四個。

我想提取ID多次出現的行-我想我可以用count(x)做到這一點-

桌子看起來像

+------+------++------+------++------+------++------+------++------+------+
ID      Date            T1          T2          T3          .....
+------+------++------+------++------+------++------+------++------+------+
1       2016-01-01      1212        13412       121212
2       2016-01-01      1214        12541       121241
1       2016-01-01      1212        13412       121212
2       2016-01-01      1214        12541       121241
4       2016-01-01      1214        66666       121241
2       2016-01-01      1214        98889       121241
1       2015-01-01      1213        13412       121212
2       2016-01-01      1214        66666       121241
2       2016-01-02      1214        66666       121241
3       2016-01-01      1214        66666       121241
+------+------++------+------++------+------++------+------++------+------+

結果應如下所示

+------+------++------+------++------+------++------+------++------+------+
ID      Date            T1          T2          T3          .....
+------+------++------+------++------+------++------+------++------+------+
1       2016-01-01      1212        13412       121212
2       2016-01-01      1214        12541       121241
2       2016-01-01      1214        12541       121241
2       2016-01-01      1214        98889       121241
2       2016-01-01      1214        66666       121241
2       2016-01-02      1214        66666       121241
+------+------++------+------++------+------++------+------++------+------+

如您所見,結果包含不同時間日期之間的計數> 1的ID(> 2016-01-01,<NOW)。

我嘗試使用此查詢進行選擇

SELECT 
id, id_date, T1, T2, T3
FROM XY
WHERE id IN (
SELECT id
FROM XY
GROUP BY id
HAVING count(*) > 1
) AND date > '2016-01-01'
GROUP BY id, id_date, T1, T2, T3 

結果與我執行的其他方法不同。 我首先使用以下查詢創建了一個臨時表

SELECT id, id_date, T1, T2, T3 FROM XY

WHERE id_date > '2016-01-01'

GROUP BY id, id_date, T1, T2, T3

然后,我從臨時表中取出一個ID,然后使用另一種方法檢查即將到來的結果。 他們是不同的。

長話短說:

如何從特定日期范圍內的表中提取出現次數介於2到10之間的ID? 我的分組依據是否存在錯誤?

SELECT 
id, id_date, T1, T2, T3
FROM XY
WHERE id IN (
SELECT id
FROM XY
where date > 'start-date' and date < 'end-date'
GROUP BY id
HAVING count(*) > 1 and count(*) <11
) AND date > '2016-01-01' 
GROUP BY id, id_date, T1, T2, T3 

having子句中添加另一個條件來滿足您的要求。 添加where子句以查詢提取ID

暫無
暫無

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

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