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

Rozkład liczby zamówień na klienta SQL

Cloud VPS
0 głosów
670 wizyt
pytanie zadane 15 lutego 2023 w SQL, bazy danych przez Blds Użytkownik (830 p.)
edycja 15 lutego 2023 przez Blds

Próbuję napisać kod żeby wyciągnąć rozkład liczby zamówień na klienta. Kod wygląda mniej więcej tak:

SELECT liczba_zamowien, 
             count(*) as liczba_klientow
FROM
(SELECT      c.customer_id,
                    count(o.order_id) as liczba_zamowien
FROM         customer c
INNER JOIN order o on o.customer_id = c.customer_id 
GROUP BY 1) a
GROUP BY liczba_zamowien

Jeżeli robię wewnętrznego selecta to mam tylko jednego klient z największa iloscia zamówien 22 .

Gdy zrobię zewnetrznego selecta, którym chcę policzyć ile razy wystąpiła dana ilość to nagle pojawiają sie dwa rekordy z ilosciami, których wcześniej nie było (28 i 42) gdzie robię błąd?

1
komentarz 15 lutego 2023 przez tangarr Mędrzec (155,180 p.)
Daj definicje tabel i zdefiniuj co rozumiesz przez "rozkład"
komentarz 15 lutego 2023 przez Blds Użytkownik (830 p.)
Chciałbym wyciągnąć ilość zamówień na klienta wewnętrznym zapytaniem, a zewnętrznym ile razy dana ilość zamówień się powtórzyła. Co potrzebujesz jeśli chodzi o definicje tabel?

Tabela customer zawiera wszystkich klientów, tabela order wszystkie zamówienia
komentarz 15 lutego 2023 przez Blds Użytkownik (830 p.)
generalnie w zapytaniu jest jeszcze łączenie z 3 tabelami więc nie wiem czy wymienianie pol coś da. W każdym razie zauwazyłem ze we wklejonym kodzie zrobiłem błąd bo łączenie customer z order odbywa się po customer_id (już poprawłem).

Kolejną zagwozdką jest, że w jednym order_id moze być kilka pozycji (np. kilka ksiazek w jednym zamwieniu). W tabeli order występuje raz (kolumna positions mowi o ilosci pozycji), ale w tabeli order_specific każde zamówienie (order_id) występuje tyle razy ile jest pozycji. Dlaczego gdy selectuje customer_id i order_id z tabeli order to mimo jednej pozycji w tabeli order pokaze mi tyle ile w tabeli order_specific.Chciałbym wyciągnąć ilość zamówień na klienta wewnętrznym zapytaniem, a zewnętrznym ile razy dana ilość zamówień się powtórzyła. Co potrzebujesz jeśli chodzi o definicje tabel?

Tabela customer zawiera wszystkich klientów, tabela order wszystkie zamówienia

1 odpowiedź

+1 głos
odpowiedź 15 lutego 2023 przez tangarr Mędrzec (155,180 p.)

Jeżeli tabela orders zawiera pole jednoznacznie określające klienta to nie ma potrzeby łączyć tej tabeli z innymi
Wewnętrzny select może wyglądać tak:

SELECT customer_id, count(*) as liczba_zamowien FROM order GROUP BY customer_id;

 

Podobne pytania

0 głosów
1 odpowiedź 283 wizyt
pytanie zadane 27 maja 2021 w Systemy operacyjne, programy przez Bartas1401 Nowicjusz (120 p.)
+1 głos
0 odpowiedzi 2,623 wizyt
pytanie zadane 22 marca 2017 w SQL, bazy danych przez swagimir Nowicjusz (190 p.)
0 głosów
3 odpowiedzi 376 wizyt

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,837 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
...