Mam tabele ‘orders’ ktora wyglada w uproszeniu tak:

ID_customer, order_nr, order_date

Chcę w możliwie najprostszy sposób wyszukać w niej takich klientów, dla których przerwa pomiędzy ostatnim a przedostatnim zamówieniem to dokładnie 6 miesięcy.

  1. SELECT o.order_nr
  2. FROM orders o
  3. WHERE NOT EXISTS (SELECT 1 FROM orders WHERE id_customer = o.id_customer AND o.order_date < order_date) /*1. nie ma nowszych zamówień – to jest ok*/
  4. AND EXISTS (SELECT 1 FROM sales_order WHERE id_customer = o.id_customer
  5. AND DATE_SUB(substr(o.order_date,1,10), INTERVAL 6 MONTH) = substr(order_date,1,10)
  6. ) /*2. odstęp między przedostatnim a ostatnim zamówieniem to dokladnie 6 mies*/


Problem jest w drugim warunku. Zwraca mi bardzo różnych klientów, np. takich, których ostatnie i przedostatnie zamówienie dzieli dwa dni O-o
Jakaś podpowiedź?