添加每个客户的旧购买列以进行比较
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了添加每个客户的旧购买列以进行比较相关的知识,希望对你有一定的参考价值。
在Sqlite上读书并决定测试某些查询以获得乐趣。
这个让我思考。
如何获得价格低于之前商品的新商品的持续买家数量?
- 没有联接需要它在同一个表中。
- 相关的表名:qazxsw poi:约会,qazxsw poi,qazxsw poi
到目前为止,我找到了连续的客户,但无法检查他们以前的购买。
day
认为通过将customer
订购的每个客户的购买添加到彼此相邻的列中,可能是进行实际“每持续客户”检查的唯一方法。
对于再现性,您可以使用:
price
如果您只是想要计数并且不关心特定客户是谁,那么获得多次订购相同商品的客户数量的一种方式,以及稍后的较低价格,是使用相关的带有SELECT * FROM (SELECT * FROM ORDERS GROUP BY CUSTOMER HAVING COUNT(*)>1);
谓词的子查询:
date_bought
这将返回不同客户的计数,其中存在具有相同项目的行并且在较早的某天具有较高的价格。
如果我理解你的问题,我认为这就是你想要的。
我的自我加入方法就是这样的。
CREATE TABLE orders (
day DATE,
price FLOAT
item char
customer char
);
INSERT INTO orders(day, price,item,customer) VALUES(date('now', 'localtime', '-2 day'), 0.5,'food','Jenny');
INSERT INTO orders(day, price,item,customer) VALUES(date('now', 'localtime', '-23 day'), 1,'food','Jenny');
INSERT INTO orders(day, price,item,customer) VALUES(date('now', 'localtime', '-1 day'), 11,'food','Betty');
INSERT INTO orders(day, price,item,customer) VALUES(date('now', 'localtime', '-22 day'), 7,'food','Betty');
INSERT INTO orders(day, price,item,customer) VALUES(date('now', 'localtime', '-3 day'), 8,'food','Katy');
INSERT INTO orders(day, price,item,customer) VALUES(date('now', 'localtime', '-4 day'), 10,'food','Mary');
INSERT INTO orders(day, price,item,customer) VALUES(date('now', 'localtime', '-23 day'), 1,'food','Mary');
INSERT INTO orders(day, price,item,customer) VALUES(date('now', 'localtime', '-1 day'), 2,'food','Anna');
INSERT INTO orders(day, price,item,customer) VALUES(date('now', 'localtime', '-2 day'), 12,'food','Anna');
INSERT INTO orders(day, price,item,customer) VALUES(date('now', 'localtime', '-3 day'), 8,'food','Anna');
INSERT INTO orders(day, price,item,customer) VALUES(date('now', 'localtime', '-4 day'), 10,'food','Lisa');
INSERT INTO orders(day, price,item,customer) VALUES(date('now', 'localtime', '-5 day'), 5,'food','Lisa');
INSERT INTO orders(day, price,item,customer) VALUES(date('now', 'localtime', '-8 day'), 12,'food','Jenny');
这是假设exists
指的是他们最近订单上的一个项目。如果select count(distinct customer)
from orders o1
where exists (
select customer
from orders o2
where o1.customer = o2.customer and
o1.item = o2.item and
o1.day > o2.day and
o1.price < o2.price
);
引用任何先前的订单,您可以将子查询替换为:
select your field
from orders o1 join orders o2 on o1.customer = o2.customer
where o2.price < o1.price
and o1.day = (select max(day)
from orders
where day < o2.day
and customer = o2.customer)
您可以使用CTE。这将为您提供实际细节。如果你只想计数只需用their previous item
替换最终的their previous item
:
and o1.day < o2.day
如果查看与之前购买的比较,那么这个替代方案:
SELECT *
以上是关于添加每个客户的旧购买列以进行比较的主要内容,如果未能解决你的问题,请参考以下文章
Pandas:如何比较导入的 csv 文件的列以确保它们相同?
您如何保留原始列以在 r 中两个数据库的 full_join() 中进行比较