gpt4 book ai didi

mysql - SQL : Get rows with multiple conditions

转载 作者:行者123 更新时间:2023-11-30 23:47:18 25 4
gpt4 key购买 nike

我有下表:

id     r_date    time_stamp   licenseid   storeid  deviceid   value
1 2015-06-12 17:36:15 lic0001 1 0add 52
2 2015-06-12 17:36:15 lic0002 1 0add 54
3 2015-06-12 17:36:15 lic0003 1 0add 53
4 2015-06-12 17:36:21 lic0001 1 0add 54
5 2015-06-12 17:36:21 lic0002 1 0add 59
6 2015-06-12 17:36:21 lic0003 1 0add 52
7 2015-06-12 17:36:21 lic0004 1 0add 55
8 2015-06-12 17:36:15 lic0001 1 0bdd 63
9 2015-06-12 17:36:15 lic0002 1 0bdd 52
10 2015-06-12 17:36:15 lic0003 1 0cdd 52
11 2015-06-12 17:36:15 lic0001 1 0cdd 53
12 2015-06-12 17:36:15 lic0002 1 0cdd 52
13 2015-06-12 17:36:15 lic0004 1 0cdd 52

我需要设备永远不会超过某个值的 deviceid,并且具有不同的 time_stamp > y 的计数。因此,在上表中,我需要说明那些值从未超过 60 且 y = 1 的设备。这应该在下面返回。因为 0add 是唯一一个从不低于 60 的设备,并且出现在 2 个不同的时间戳中。

r_date       deviceid   count
2015-06-12 0add 2

我有以下查询来帮助获取计数,但如何添加计数>1 的条件和第一个条件以仅包含始终低于特定值的值?表中有 200 万行。

SELECT device_id, r_date, COUNT(DISTINCT time_stamp) AS numRows
FROM myTable
GROUP BY device_id, r_date;

r_date 是 DATE 类型,time_stamp 是 TIME 类型

最佳答案

你试过吗?

    SELECT 
device_id
, date
, COUNT(DISTINCT timestamp) AS numRows
FROM
myTable
WHERE
(
Select
COUNT(*)
from
myTable tmp
where
tmp.device_id = myTable.device_id
where
value >= 60
) = 0
GROUP BY device_id, date
HAVING numRows > 1

子查询将获取当前 device_id 超过所选数量 (60) 的行数,您希望这些行数为 0。

关于mysql - SQL : Get rows with multiple conditions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31202208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com