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');
、ということありません自己結合を含める? –
私はそれを言っていない、私は彼らがただ同じテーブルにいると言った。自己結合はおそらく解決策への道ですが、それを正しく実行するのは難しかった –