Van egy feladat sql-ben, és meg is van a megoldás. De nem értek teljesen benne valamit. Fejenként mennyit fizettek átlagosan az ügyfelek, ha az átlagba csak a fizető ügyfelek számítanak?
Megoldás: SELECT avg(fejenkent) FROM (SELECT sum(osszeg) as fejenkent FROM befiz GROUP BY azon) as xyz
Amit nem értek. from után nem táblanév jelenik meg, helyette gondolom abból a halmazból kell választania amit a 2. select ad vissza, ugye? És minek a végére az az as xyz. a 2. lekérdezésnek adna egy xyz táblanevet? Mert így látom értelmét.Jól látom?
Jól érted.
Csinál először egy alaphalmazt:
"SELECT sum(osszeg) as fejenkent FROM befiz GROUP BY azon"
Ami tartalmazza, hogy azonosítónként mennyi volt a befizetések összege.
Majd ennek a halmaznak kéri le az átlagát a külső selecttel.
Igen az xyz csak egy elnevezés erre a "virtuális táblára",
tehát kívül ezt írhatná:
SELECT avg(xyz.fejenkent)
Mivel nem írja ki, hogy 'xyz.' így az 'as xyz' rész el is hagyható.
Értelemszerűbb összekapcsolni a két táblát:
SELECT ugyfel.nev, AVG(befiz.osszeg) AS atlag
FROM befiz
INNER JOIN ugyfel
ON befiz.azon=ugyfel.azon
GROUP BY befiz.azon;
Példa:
"SELECT ugyfel.nev, AVG(befiz.osszeg) AS atlag "
Ha jól értem, akkor nem az volt a kérdés, hogy ügyfelenként mennyi az átlagos vásárlás, hanem hogy azok között, akik vásároltak átlagosan mennyiért.
Tehát 1 szám lesz a válasz.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!