• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Logika w SQL

0 głosów
726 wizyt
pytanie zadane 9 lutego 2023 w SQL, bazy danych przez Blds Użytkownik (830 p.)

Potrzebuję wyciągnąć z bazy klientów, którzy w ciagu ostatnich 60 dni kupili min. jedną książkę lub klientów, którzy zarejestrowali się między 30 a 60 dni temu, ale nie zamówili żadnej książki. czy taki sposób rozpisania logiki będzie poprawny?

and exists (select 1
		 from order as o
	       	where c.customer_id = o.customer_id
		and order_date >= curdate() - interval 60 day)
or (exists (select 1
            from customer as c
            where c.register_date < curdate() - interval 30 day
            and c.register_date >= curdate() - interval 60 day
            and not exists (select 1
	        from order
	        where customer_id = c.customer_id
		           )))

 

1 odpowiedź

+1 głos
odpowiedź 9 lutego 2023 przez Wiciorny Ekspert (283,300 p.)

Troszkę mało czytelne to jest., uważam że powinieneś mieć w bazie klientów informacje o tym ile aktualnie maja zamowień.
Sprawdź może 
 

SELECT * 
FROM customer c 
WHERE 
  (c.register_date >= CURDATE() - INTERVAL 60 DAY 
   AND c.register_date < CURDATE() - INTERVAL 30 DAY 
   AND NOT EXISTS (SELECT 1 FROM order o WHERE c.customer_id = o.customer_id))
  OR 
  EXISTS (SELECT 1 FROM order o WHERE c.customer_id = o.customer_id AND o.order_date >= CURDATE() - INTERVAL 60 DAY)

Klienci, którzy kupili co najmniej jedną książkę w ciągu ostatnich 60 dni, są filtrowani przez pierwszy EXISTS clause. Klienci, którzy zarejestrowali się między 30 a 60 tym dniem temu, ale nie zamówili żadnej książki, są filtrowani przez drugi EXISTS clause w połączeniu z AND NOT EXISTS clause.

Podobne pytania

0 głosów
1 odpowiedź 248 wizyt
pytanie zadane 30 czerwca 2023 w SQL, bazy danych przez Blds Użytkownik (830 p.)
0 głosów
1 odpowiedź 773 wizyt
pytanie zadane 9 marca 2023 w SQL, bazy danych przez Blds Użytkownik (830 p.)
0 głosów
1 odpowiedź 188 wizyt
pytanie zadane 23 lutego 2023 w SQL, bazy danych przez Blds Użytkownik (830 p.)

93,741 zapytań

142,676 odpowiedzi

323,294 komentarzy

63,323 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...