AVG je tusim je prumer.
SELECT AVG(sloupec) FROM ... a nic vic, vraci jedno jedine cislo, hodnotu, takze se da pouzit v selectu. (Ikdyz si ted nejsem jisty, jak je to pro ruzne sql.) Myslim, ze by se to dalo resit i pres LEFT JOIN.
Ono, hodne by ti pomohlo, nechat si to zformatovat
http://www.dpriver.com/…mat.htm
SELECT productid,
NAME,
standardcost,
listprice,
(SELECT Avg(unitprice)
FROM saleslt.salesorderdetail AS SOD
WHERE P.productid = SOD.productid) AS AvgSellingPrice
FROM saleslt.product AS P
WHERE standardcost > (SELECT Avg(unitprice)
FROM saleslt.salesorderdetail AS SOD
WHERE P.productid = SOD.productid)
ORDER BY P.productid;
(SELECT Avg(unitprice) FROM saleslt.salesorderdetail AS SOD WHERE P.productid = SOD.productid)
Vybere jedno cislo, rekneme, ze to bude 123,456. K nemu pridas alias, nazev sloupce 'AS AvgSellingPrice' pro ten vnejsi select.
(SELECT Avg(unitprice) FROM saleslt.salesorderdetail AS SOD WHERE P.productid = SOD.productid)
Tez vybere jedno cislo, rekneme 98,76
SELECT productid,
NAME,
standardcost,
listprice,
123.456 AS AvgSellingPrice
FROM saleslt.product AS P
WHERE standardcost > 98.76
ORDER BY P.productid;
A jeste je to v obou pripadech zavisle na radku, na kterem zrovna jsi
WHERE P.ProductID = SOD.ProductID,
takze to nebude vzdy 123.456, ale bude se to menit.
Cili, zajimate, jestli standardcost > prumerna cena zbozi podle podminky, treba kategorie = mobilni telefony.
Cili, jestli to spravne chapu, tak mas tabulku seznam vyrobku a tabulku prodane zbozi, ktera je zparovana podle id_produktu. A ted ty ty mobily muzes prodavat treba se slevou nebo dalsimu distributorovi se slevou, v akci nebo jako bonus k jinemu zbozi, takze v tabulce prodaneho zbozi bude mit odlisne ceny. A zajima te, ktere zbozi jsi prodaval levneji nez je P.standardcost (treba 100) > 98,76. Takze, na cem jsi prodelal.