» »

MSSQL pomoč

MSSQL pomoč

cobrica ::

Torej imam naslednjo nalogo, ki mi je nikakor ne uspe rešiti in sicer.

Izpišite vsoto vseh prodaj tistih prodajalcev, ki so prodali več, kot je obseg največjega naročila v tabeli Narocilo.

Vsak selekt stavek sem posebej rešil, ker nevem kako bi uporabil WHERE stavek v katerem bi preveril največji obseg in izpisal le tistega, ki ima skupni obseg večji kot največji obseg v tabeli.
Z tem selekt stavkom seštejem vse obsege za vsakega prodajalca posebej.

SELECT KodaProdajalca, SUM(Obseg) AS SkupajProdano
FROM Narocilo GROUP BY KodaProdajalca

Z tem selekt stavkom pa izpišem največji obseg v tabeli.
SELECT MAX(Obseg) AS MaxObsegNarocila FROM Narocilo

Ma kdo idejo kako to združit? Gre se pa za nekakšna vnešena vprašanja.

detroit ::

najlažje s common table expressionom če sm prav razumel

Google

Building recursive Queries with CTE oz samo Common table expression
Skero

detroit ::

WITH SUM_NAROČILO (
AS (SELECT MAX(Obseg) AS MaxObsegNarocila FROM Narocilo)
SELECT KodaProdajalca, SUM(Obseg) AS SkupajProdano
FROM Narocilo
WHERE SKupajProdano > SUM_NAROČILO.SUM
GROUP BY KodaProdajalca

da ti mal pomagam za začetek (vsekakor tole dvomim da dlea out of the box hehe)

Mislim pa da se da še lažje ampak idej ni zdele
Skero

Ykz88 ::

kaj pa z "HAVING" kaj v smislu

SELECT KodaProdajalca, SUM(Obseg) AS SkupajProdano
FROM Narocilo
GROUP BY KodaProdajalca
HAVING Sum(obseg)>(select MAX(Obseg) AS MaxObsegNarocila FROM Narocilo )

detroit ::

ekola ja to je lažja varianta:)
Skero

cobrica ::

Čisto sem pozabil na having. Hvala deluje kot iz topa :)

Ykz88 ::

Malenkost

cobrica ::

Še malce pomoči bi prosil in sicer naloga je sledeča.
Izpišite vsa imena in range vseh kupcev, ki so izvršili naročila nad povprečjem vseh naročil.
ImeKupca,Rang se nahajajo v tabeli Kupec
Obseg se pa nahaja v tabeli Narocilo.

Najprej sem zdruzil dve tabeli:
SELECT DISTINCT ImeKupca,Rang FROM Kupec k JOIN Narocilo n ON k.KodaKupca = n.KodaKupca

Potem sem pa naredil sledeče. Seštel sem vse nakupe vsakega kupca posebaj in z boolean operacijo prečekiral,kateri ima nad povprečjem vse naročil ter ispisal:
SELECT SUM(Obseg) AS SkupajNaroceno FROM Narocilo GROUP BY KodaKupca HAVING Sum(Obseg) > (SELECT AVG(Obseg) FROM Narocilo)

Problem se pojavi kako sedaj ta dva selekt stavka zdruzit, namreč izpisati mi more še ImeKupca in Rang vendar iz druge tabele.. Sem drugače poiskusil z join ampak mi nikakor ne rata!

Reseno.

Zgodovina sprememb…

  • spremenil: cobrica ()

Ykz88 ::

Če predpostavimo da je tvoj drugi select stavek ustrezen, potem je en način združevanja vgnezdenje select stavkov torej nekaj v tem smislu

select distinct ImeKupca, Rang
from Kupec
where KodaKupca in (select KodaKupca from narocilo group by KodaKupca having sum(obseg) > (select avg(obseg) from narocilo)

cobrica ::

Pozdravljeni, še eno vprašanje imam in sicer gre se glede povezovanje tabele same s seboj. Nikjer nisem našel kakšnega primera, tako da niti nevem kak se naj lotim zadeve. Vprašanje je:
24. Izpišite vse pare prodajalcev, ki živijo v istem mestu (npr. Sisek = Palek). Izpis naj izloči kombinacije prodajalcev samih s seboj (npr. Kres = Kres) in obratne izpise prodajalcev (npr. Palek = Sisek).

Torej če zastopim prav z select stavkom izpišem Prodajalce ampak kako izpišem samo pare, ki so iz istega kraja?


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

PostgreSQL pomoč

Oddelek: Programiranje
162522 (2015) Mato989
»

[Sql] Poizvedba

Oddelek: Programiranje
111834 (1485) ales85
»

[SQL] Insert

Oddelek: Programiranje
252088 (1690) greentech
»

SQL poizvedba z DISTINCT

Oddelek: Programiranje
191919 (1760) zdravc
»

problem kje v strežniku ali v SQL-u ali PHP kodi?

Oddelek: Izdelava spletišč
111148 (1005) Yohan del Sud

Več podobnih tem