Forum » Programiranje » sql težava
sql težava
wind ::
Napisat moral ta query:
Izpiši imena trgovcev z najvišjim razmerjem med številom prodanih izdelkov in vsoto razdalj do kupcev.
Ni mi jasno kako v sql "definiram" z najvišjim razmerjem.
Z enim kverijem dobim število prodanih izdelkov na posameznega trgovca:
T1 6550
T2 2000
T3 xy
Z drugim pa vsoto razdalj do kupcev:
T1 500
T2 150
T3 xy
Sedaj me pa zanima kako moram združit ta dva kverija.
Izpiši imena trgovcev z najvišjim razmerjem med številom prodanih izdelkov in vsoto razdalj do kupcev.
Ni mi jasno kako v sql "definiram" z najvišjim razmerjem.
Z enim kverijem dobim število prodanih izdelkov na posameznega trgovca:
T1 6550
T2 2000
T3 xy
Z drugim pa vsoto razdalj do kupcev:
T1 500
T2 150
T3 xy
Sedaj me pa zanima kako moram združit ta dva kverija.
- spremenil: wind ()
AndrejS ::
Oboje sedaj zdeliš (to je razmerje) in sortiraš po rezultato padajoče.
Sicer pa je težko pomagati če ne poznam tabel...
Sicer pa je težko pomagati če ne poznam tabel...
ElectricMan ::
Nekaj takega
SELECT ime_trgovec,(SUM(razdalja)/COUNT(st_izdelkov)) as razmerje
FROM tabela
GROUP BY ime_trgovec
SELECT ime_trgovec,(SUM(razdalja)/COUNT(st_izdelkov)) as razmerje
FROM tabela
GROUP BY ime_trgovec
dmok ::
Še malo bolj na dolgo to, kar je napisal BigWhale: queryja združiš z JOINom.
SELECT
Q1.Trgovec,
Q1.SteviloProdanihIzdelkov / Q2.VsotaRazdalj AS Razmerje
FROM
(Query1) Q1,
(Query2) Q2
WHERE
Q1.Trgovec = Q2.Trgovec AND
Q2.VsotaRazdalj < > 0
ORDER BY
Q1.SteviloProdanihIzdelkov / Q2.VsotaRazdalj DESC
d.
SELECT
Q1.Trgovec,
Q1.SteviloProdanihIzdelkov / Q2.VsotaRazdalj AS Razmerje
FROM
(Query1) Q1,
(Query2) Q2
WHERE
Q1.Trgovec = Q2.Trgovec AND
Q2.VsotaRazdalj < > 0
ORDER BY
Q1.SteviloProdanihIzdelkov / Q2.VsotaRazdalj DESC
d.
wind ::
Hvala vsem za odgovore.
Rešil sem tako:
SELECT priimek FROM vsota_razdalj_do_kupcev_in_stevilo_proizvodov
WHERE vsota_razdalj_do_kupcev > 0
AND (stevilo_prodanih_proizvodov / vsota_razdalj_do_kupcev) =
(SELECT MAX(stevilo_prodanih_proizvodov / vsota_razdalj_do_kupcev)
FROM vsota_razdalj_do_kupcev_in_stevilo_proizvodov
WHERE vsota_razdalj_do_kupcev > 0);
Rešil sem tako:
SELECT priimek FROM vsota_razdalj_do_kupcev_in_stevilo_proizvodov
WHERE vsota_razdalj_do_kupcev > 0
AND (stevilo_prodanih_proizvodov / vsota_razdalj_do_kupcev) =
(SELECT MAX(stevilo_prodanih_proizvodov / vsota_razdalj_do_kupcev)
FROM vsota_razdalj_do_kupcev_in_stevilo_proizvodov
WHERE vsota_razdalj_do_kupcev > 0);
icek ::
Delam en program za vodenje gimnasticne tekme.
imam sql query:
SELECT ekipa, SUM(part_kon) AS parter, SUM(konj_kon) AS konj, SUM(krogi_kon) AS krogi, SUM(pres_kon) AS preskok, SUM(brad_kon) AS bradlja, SUM(drog_kon) AS drog, (parter+konj+krogi+preskok+bradlja+drog) AS skupaj
FROM tekmovalec T, ekipe E, ocene O, kategorija K, tekmovanje Te
WHERE O.ID_tekmovalec=T.ID_tekmovalec
AND K.ID_kategorija=1
AND O.ID_tekma=Te.ID_tekma
AND Te.ID_tekma=5
AND T.ID_ekipa=E.ID_ekipa
AND O.ID_tekmovalec=T.ID_tekmovalec
GROUP BY ekipa;
v linijah part_kon, konj_kon...so lahko 3 ali 4 ocene.
Sedaj pa bi rad sledece:
- Ce so 3 ocene mi vse skupaj sesteje (primer zgoraj),
- Ce so 4 ocene sesteje 3 najvisje, najnizjo pa ignorira.
naprimer TOP 3 part_kon mi vrze ven 3 najvišje vrednosti (ocene)
sem probal se SUM(TOP 3 part_kon) pa mi ne dela.
Ima kdo idejo, kako bi to naredil s tem?
Upam da sem bil dovolj razumljiv. Z bazami delam prvic. Baza je accessova.
imam sql query:
SELECT ekipa, SUM(part_kon) AS parter, SUM(konj_kon) AS konj, SUM(krogi_kon) AS krogi, SUM(pres_kon) AS preskok, SUM(brad_kon) AS bradlja, SUM(drog_kon) AS drog, (parter+konj+krogi+preskok+bradlja+drog) AS skupaj
FROM tekmovalec T, ekipe E, ocene O, kategorija K, tekmovanje Te
WHERE O.ID_tekmovalec=T.ID_tekmovalec
AND K.ID_kategorija=1
AND O.ID_tekma=Te.ID_tekma
AND Te.ID_tekma=5
AND T.ID_ekipa=E.ID_ekipa
AND O.ID_tekmovalec=T.ID_tekmovalec
GROUP BY ekipa;
v linijah part_kon, konj_kon...so lahko 3 ali 4 ocene.
Sedaj pa bi rad sledece:
- Ce so 3 ocene mi vse skupaj sesteje (primer zgoraj),
- Ce so 4 ocene sesteje 3 najvisje, najnizjo pa ignorira.
naprimer TOP 3 part_kon mi vrze ven 3 najvišje vrednosti (ocene)
sem probal se SUM(TOP 3 part_kon) pa mi ne dela.
Ima kdo idejo, kako bi to naredil s tem?
Upam da sem bil dovolj razumljiv. Z bazami delam prvic. Baza je accessova.
Rider of Theli
www.air-tv.net
www.air-tv.net
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | matematično vprašanje o vesoljuOddelek: Znanost in tehnologija | 3915 (2939) | Unknown_001 |
» | MSSQL pomočOddelek: Programiranje | 733 (573) | cobrica |
» | RačunOddelek: Šola | 1697 (1336) | joze67 |
» | SQL vprašanjeOddelek: Izdelava spletišč | 2666 (2229) | jerneju |
» | [mysql] malo bolj zahtevna poizvedbaOddelek: Programiranje | 1589 (1440) | destiny |