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

Sumowanie ilości kartonów SQL

Object Storage Arubacloud
0 głosów
539 wizyt
pytanie zadane 11 kwietnia 2018 w SQL, bazy danych przez hiper007 Stary wyjadacz (11,270 p.)
SELECT awizacja, SUM(appt.kartony)
FROM (SELECT DISTINCT LEFT(awizacja,6)
as awizacja, (appt.kartony) FROM appt) as appt GROUP by 1

Mam pytanko. Chciałbym aby zliczało mi sumę kartonów z wszystkich awizacji bez powtórzen. Przykład:

765432 1/3 (10 kartonów), 765432 2/3 (10 kartonów),765432 3/3 (10 kartonów), 765433 (20 kartonów),765434 (20 kartonów),765435 (20 kartonów),765436 (20 kartonów).

Suma 110 kartonów.

Ale 765432 1/3, 765432 2/3, 765432 3/3 to jedna i ta sama awizacji tylko rozdzielona na 3, dla której tylko raz powinno policzyć 10 kartonów, a nie 3 razy.

Prawidłowa ilość karonów to 90.

Tabela: appt
Kolumna: awizacja (numer awizacji 6 cyfr), kartony (ilość kartonów w awizacji)

Jak zmodyfikować tego SQLa powyższego, żeby  mi poprawnie sumowało bez powtórzen.Napisałem sqla powyżej, ale on nie sumuje razem wszystkich awizacji.

Proszę o info gdzie musiałbym poprawić.

Z góry dzięki

2 odpowiedzi

+1 głos
odpowiedź 11 kwietnia 2018 przez hoktaur Pasjonat (22,250 p.)
wybrane 11 kwietnia 2018 przez hiper007
 
Najlepsza

Ja bym tak to zrobił:

SELECT SUM(kartony) 
FROM (
  SELECT DISTINCT CAST(awizacja AS UNSIGNED), kartony
  FROM appt
) dappt

 

komentarz 11 kwietnia 2018 przez hiper007 Stary wyjadacz (11,270 p.)
SELECT SUM(kartony) 
FROM (
  SELECT DISTINCT CAST(awizacja AS UNSIGNED), kartony
  FROM appt
) dappt

rozumiem, że tam gdzie "dappt" powinno być "appt" ;)?

komentarz 11 kwietnia 2018 przez hoktaur Pasjonat (22,250 p.)
Niezupełnie w nawiasie jest tworzona nowa tymczasowa tabela na potrzeby zapytania z tylko niepowtarzających się pól 'DISTINCT' i musi ona mieć nazwę ja dałem dappt a to jest nazwa twojej tabeli appt z literką d -> distinct :)
0 głosów
odpowiedź 11 kwietnia 2018 przez sili94 Nowicjusz (180 p.)

Generalnie dodałem do tego kolumnę o nazwie "wersja", żeby móc odróżnić powtórzone awizacje od unikatowych.
Jeżeli będziesz chciał iść w tą stronę to trzymaj gotowe pytanko.

Select SUM(kartony) 
from appt
where wersja = 1
UNION
Select SUM(kartony) 
from appt
where wersja = 1

zostawiam też link do całości:
http://www.sqlfiddle.com/#!9/eda82e/9

komentarz 11 kwietnia 2018 przez hoktaur Pasjonat (22,250 p.)
W sumie po co te Union?
komentarz 12 kwietnia 2018 przez sili94 Nowicjusz (180 p.)
masz rację, rozpędziłem się :)

UNION nie jest potrzebny czyli kończymy na warunku i wszystko śmiga

Podobne pytania

0 głosów
1 odpowiedź 1,710 wizyt
pytanie zadane 26 maja 2017 w SQL, bazy danych przez Milesq Nałogowiec (32,020 p.)
+1 głos
2 odpowiedzi 320 wizyt
+1 głos
1 odpowiedź 430 wizyt
pytanie zadane 20 października 2021 w PHP przez Jacek Śmiel Użytkownik (510 p.)

92,555 zapytań

141,404 odpowiedzi

319,560 komentarzy

61,941 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...