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

Logika w SQL

Cloud VPS
0 głosów
667 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 (281,530 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ź 178 wizyt
pytanie zadane 30 czerwca 2023 w SQL, bazy danych przez Blds Użytkownik (830 p.)
0 głosów
1 odpowiedź 670 wizyt
pytanie zadane 9 marca 2023 w SQL, bazy danych przez Blds Użytkownik (830 p.)
0 głosów
1 odpowiedź 126 wizyt
pytanie zadane 23 lutego 2023 w SQL, bazy danych przez Blds Użytkownik (830 p.)

93,485 zapytań

142,417 odpowiedzi

322,765 komentarzy

62,898 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

Kursy INF.02 i INF.03
...