我有一个这样的客户表,我需要帮助从中检索信息。
Foodid |custid |DilDay |foodnum |foodbill |rating
4 1 2017-01-02 2 500 7
我想从数据库中获得忠实客户的ID。那是第一次尝试后一直回来的美食爱好者人数。在这种情况下,第一次下单后的天数/周数/月数。
以下是我的查询
select custid
from table
where foodnum = 1 and dilday = between '2017-01-02' and '2017-01-30'
上面的查询返回当月订购第一顿饭的蛋糕。 我想得到那个月之后继续存在的那些人的监护人
答案 0 :(得分:0)
好吧,您可以执行以下操作:
select custid
from table
where foodnum = 1 and dilday >= '2017-01-02'
group by custid
having min(dilday) <= '2017-01-30' and -- ordered in month
max(dilday) > '2017-01-30' -- ordered later
答案 1 :(得分:0)
假设foodnum
是一个按顺序递增的顺序计数器,并且如果他们订购了多次(甚至在一月份),则您将它们视为忠诚的,则可以执行以下操作:
SELECT custid FROM table
WHERE foodnum > 1 AND
custid IN (
SELECT custid FROM table
WHERE foodnum = 1 AND
dilday BETWEEN '2017-01-02' AND '2017-01-30')
......,其中子查询收集了2017年1月订购的所有客户,外部查询找到了foodnum
大于1的相同客户ID。