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

Oddzielne wartości na oddzielnych warunkach w jednym select

Object Storage Arubacloud
0 głosów
113 wizyt
pytanie zadane 17 stycznia 2022 w SQL, bazy danych przez Antytalent Początkujący (470 p.)

Chciałbym w procedurze wyświetlić średnie zyski każdej usługi. Tutaj jest oddzielny SELECT dla każdej, ale w bazie jest 5 usług, a gorzej by było z ich większa ilością. Czy jest możliwość umieścić to w jednym selekcie? Z góry dzięki

CREATE OR REPLACE PROCEDURE zad 
AS
usl1 NUMBER;
usl2 NUMBER;
usl3 NUMBER;
usl4 NUMBER;
usl5 NUMBER;

BEGIN
SELECT sum(Cena) INTO usl1 FROM Zlecenie
JOIN Usluga ON Zlecenie.ID_Uslugi = Usluga.ID_Uslugi
WHERE Usluga.Id_Uslugi = 1;

SELECT sum(Cena) INTO usl2 FROM Zlecenie
JOIN Usluga ON Zlecenie.ID_Uslugi = Usluga.ID_Uslugi
WHERE Usluga.Id_Uslugi = 2;

SELECT sum(Cena) INTO usl3 FROM Zlecenie
JOIN Usluga ON Zlecenie.ID_Uslugi = Usluga.ID_Uslugi
WHERE Usluga.Id_Uslugi = 3;

SELECT sum(Cena) INTO usl4 FROM Zlecenie
JOIN Usluga ON Zlecenie.ID_Uslugi = Usluga.ID_Uslugi
WHERE Usluga.Id_Uslugi = 4;

SELECT sum(Cena) INTO usl5 FROM Zlecenie
JOIN Usluga ON Zlecenie.ID_Uslugi = Usluga.ID_Uslugi
WHERE Usluga.Id_Uslugi = 5;
END;

 

komentarz 23 stycznia 2022 przez PreZmyK Pasjonat (21,470 p.)
Zamiast = użyj IN

1 odpowiedź

0 głosów
odpowiedź 22 stycznia 2022 przez bwaluk Mądrala (5,440 p.)
SELECT 
     z.ID_Uslugi
    ,z.SUM(Cena) AS Cena
FROM Zlecenie AS z
GROUP BY z.ID_Uslugi

Z tabeli "Usluga" nie bierzesz nic ciekawego, więc w sumie nie wiem po co join tej tabeli. 

Dodatkowo, piszesz o średnich zyskach, a jednak w selectach jest suma. Jeśli to mają być faktycznie średnie, to zamiast SUM użyj AVG. 
 

komentarz 22 stycznia 2022 przez Wiciorny Ekspert (269,710 p.)

twoje zapytania zwarca sume ... usługi każdej po kolei tak na marginesie. Nie ma gwarancji że zlecenie ma usługe, dlatego kolega stosuje joina, bo jesli zlecenie nie jest powiązane z usługą ot nie wyświetl itakich usług, tak jak twój selekt, który robi to dla wszystkich :)
U Ciebie weżmie pod uwagę wszystkie zlecenie, a nie część wspólną zleceń i usług

z.SUM(Cena) AS Cena
to nie jest poprawnie bo nie ma kolumny CENA w zleceniach a Usługach 

Podobne pytania

0 głosów
1 odpowiedź 189 wizyt
0 głosów
2 odpowiedzi 1,305 wizyt
pytanie zadane 10 stycznia 2017 w SQL, bazy danych przez michal.nl Nowicjusz (170 p.)
+1 głos
2 odpowiedzi 523 wizyt
pytanie zadane 1 sierpnia 2021 w SQL, bazy danych przez mgab Nowicjusz (160 p.)

92,563 zapytań

141,413 odpowiedzi

319,590 komentarzy

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

...