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

Zliczanie wierszy bez powtórzeń

Object Storage Arubacloud
0 głosów
936 wizyt
pytanie zadane 9 kwietnia 2018 w SQL, bazy danych przez hiper007 Stary wyjadacz (11,270 p.)
otwarte ponownie 10 kwietnia 2018 przez hiper007

Witam!

Mam tabele, w której zliczam numery awizacji. Numer awizacji liczy 6 cyfr (np.765213). tabela nazywa się awizacje a kolumna appt. Problem w tym, że nieraz muszę jedną awizację rozdzielić na kilka. Np.

Mam w bazie awizacje: 765432,765433,765434,765435,765436

Potrzebuje jedną z nich rozdzielić na 3: 765432 1/3, 765432 2/3,765432 3/3

Po rozdzieleniu mamy: 65432 1/3, 765432 2/3,765432 3/3, 765433,765434,765435,765436.

Mimo, że mamy teraz w bazie 7 rekordów to ciągle 5 awizacji. W jaki sposób zliczyć wszystkie awizacje, a nie rekordy w bazie. Chodzi o SQLa bo słowo kluczowe distinct nie rozwiąże tutaj problemu. Ma ktoś jakiś pomysł? Z góry dzięki

1 odpowiedź

+1 głos
odpowiedź 9 kwietnia 2018 przez maciej.tokarz Nałogowiec (27,280 p.)
wybrane 9 kwietnia 2018 przez hiper007
 
Najlepsza

A nie możesz tak?

M.

komentarz 9 kwietnia 2018 przez hiper007 Stary wyjadacz (11,270 p.)
O tym juz myslalem zeby rozdzial dac do osobnej kolumny w bazie: '1/2','2/2' a wyswietlic w jednej ciagu i wtedy zrobic distinct ale myslalem ze mozna jakos wyciac 6 znakow ze stringa i wtedy zrobic zliczanie bez powtorzec wtedy nie musialbym przerabiac calego kodu i bazy :)
komentarz 9 kwietnia 2018 przez hiper007 Stary wyjadacz (11,270 p.)
Wystarczylo zrobic : Select distinct left(appt, 6) From awizacja...
komentarz 9 kwietnia 2018 przez maciej.tokarz Nałogowiec (27,280 p.)
edycja 9 kwietnia 2018 przez maciej.tokarz

Hej!

Działania na stringach po stronie bazy nie są najlepszym rozwiązaniem biorąc pod uwagę wydajność. Dodatkowo pewnie numer awizo będzie się kiedyś tam powtarzał, zatem bazę mógłbyś tak skonstruować. Po stronie klienta możesz połączyć kolumny, przykładowo:

const foo = notification.number + ' ' + notification.version + '/' + notification.quantity;

M.

komentarz 10 kwietnia 2018 przez hiper007 Stary wyjadacz (11,270 p.)
SELECT DISTINCT LEFT(awizacja,6),sum(appt.kartony) FROM appt,data_aw WHERE appt.data_awizacja=data_aw.aw_data

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.

Jak zmodyfikować tego SQLa powyższego, żeby  mi poprawnie sumowało bez powtórzen.

komentarz 10 kwietnia 2018 przez maciej.tokarz Nałogowiec (27,280 p.)
W moim przykładzie będzie to WHERE version = 1;

M.

Podobne pytania

0 głosów
1 odpowiedź 155 wizyt
pytanie zadane 21 kwietnia 2023 w SQL, bazy danych przez Pawel1995 Gaduła (3,810 p.)
+1 głos
1 odpowiedź 123 wizyt
pytanie zadane 1 lutego 2023 w SQL, bazy danych przez Antoni2422 Użytkownik (570 p.)
0 głosów
1 odpowiedź 259 wizyt

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 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!

...