MySQL5.6有一个我查询的表:
SELECT DISTINCT client, date_buy
FROM tickets
ORDER BY client, date_buy
这几乎给了我想要的结果:
------------------------------
client | date_buy
-------------------------------
0027847524333 | 2018-06-13 16:03:43
0027847524333 | 2018-06-13 16:13:01
0027847524333 | 2018-06-18 22:03:01
0033652356025 | 2018-06-16 17:22:56
00353857861869 | 2018-08-13 17:37:56
我需要在查询中添加什么,以便只保留订单间隔超过24小时的客户?
期望结果:
------------------------------
client | date_buy
-------------------------------
0027847524333 | 2018-06-13 16:03:43
0027847524333 | 2018-06-18 22:03:01
0033652356025 | 2018-06-16 17:22:56
00353857861869 | 2018-08-13 17:37:56
更新:我想排除重复销售的一个客户发生在24小时内对方。
4条答案
按热度按时间1hdlvixo1#
您可以这样做:
kknvjkwl2#
这里有一个使用lag的解决方案
bq9c1y663#
你可以试着用
group by
与DATE(date_buy)
以及client
而不是DISTINCT
. 那就去吧MIN(date_buy)
做你的date_buy
架构(mysql v5.7)查询#1
db fiddle视图
dnph8jn44#
看来
date_buy
列是smalldatetime类型(如果不是,您可以轻松地将其解析为)。下面是实现查询的一种方法。首先创建一个包含自上一个订单以来少于或等于24小时的所有后续客户机的表:
然后,从中选择所有其他客户端
tickets
:通过从中删除条目,可以获得相同的结果
tickets
,尽管这会改变原始表。此解决方案考虑了一天中的小时差异。