Sqlite에서 책을 읽고 재미있는 질문을 테스트하기로 결정했습니다.비교할 고객 당 구 구매 열 추가
이 사람은 저를 생각합니다.
이전 항목보다 저렴한 가격으로 새 항목을 구입 한 연속 구매자의 수를 어떻게 반환 하시겠습니까?
동일한 테이블에 모든 조인이 필요하지 않습니다.
관련 테이블 이름 :
day
: 날짜가 구입,customer
,price
지금까지 내가 연속 고객을 찾았지만 이전 구매 확인을 할 수 없습니다.
SELECT * FROM (SELECT * FROM ORDERS GROUP BY CUSTOMER HAVING COUNT(*)>1);
date_bought
에 의해 주문, 서로 옆에 열의 각 고객의 구매를 추가하여 아마도 '지속적인 고객 당'실제를 할 수있는 유일한 방법이라고 생각 확인합니다.
reproducibillity 위해 당신은이를 사용할 수 있습니다
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');
:
비교에서 바로 이전의 구매, 다음이 대안을 찾고 있다면 자체 조인을 포함할까요? –
나는 그것을 말하지 않았다, 나는 그들이 같은 테이블에 있다고 말했다. 자체 조인은 아마도 해결책의 길일 수 있지만 올바르게 수행하기는 어려웠습니다. –