agr. fce

Odeslat odpověď

Smajlíci
:D :) :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode je zapnutý
[img] je zapnutý
[flash] je vypnutý
[url] je zapnuté
Smajlíci jsou zapnutí

Přehled tématu
   

Rozšířit náhled Přehled tématu: agr. fce

Re: SQL Server

od stinny » 13. 6. 2007 10:09

A co takhle?

Kód: Vybrat vše

SELECT SUM(hodin) / COUNT(DISTINCT rc_ucitele) FROM Rozvrh NATURAL JOIN Ucitel WHERE katedra = 'KSI'
Je to sice trochu prasarna, ale to preci vubec neni na skodu :) Hlavne je to jen jeden select. A deleni nulou nevadi, na prazdny DB by to nikdo svepravny snad nespoustel

Re: SQL Server

od stnicolaus » 13. 6. 2007 08:16

InvInv píše:Na SQL serveru SELECT FROM SELECT podle všecho nejde:

Kód: Vybrat vše

SELECT AVG(suma)
  FROM (
    SELECT rc_ucitele, SUM(hodin) AS suma
      FROM Rozvrh NATURAL JOIN Ucitel
      WHERE katedra = 'KSI'
      GROUP BY rc_ucitele
  ) 

ale je potřeba napsat to takhle:

Kód: Vybrat vše

WITH uci AS
(
      SELECT rc_ucitele, SUM(hodin) AS suma
      FROM Rozvrh NATURAL JOIN Ucitel
      WHERE katedra = 'KSI'
      GROUP BY rc_ucitele
)
SELECT AVG(suma)
FROM uci
SQL server je humus :D

SQL Server

od InvInv » 13. 6. 2007 02:18

Na SQL serveru SELECT FROM SELECT podle všecho nejde:

Kód: Vybrat vše

SELECT AVG(suma)
  FROM (
    SELECT rc_ucitele, SUM(hodin) AS suma
      FROM Rozvrh NATURAL JOIN Ucitel
      WHERE katedra = 'KSI'
      GROUP BY rc_ucitele
  ) 

ale je potřeba napsat to takhle:

Kód: Vybrat vše

WITH uci AS
(
      SELECT rc_ucitele, SUM(hodin) AS suma
      FROM Rozvrh NATURAL JOIN Ucitel
      WHERE katedra = 'KSI'
      GROUP BY rc_ucitele
)
SELECT AVG(suma)
FROM uci

od stnicolaus » 7. 6. 2007 22:34

Myshaak píše:Diky za pokus! ;) Ale asi jsi me spatne pochopil, jeden ucitel muze ucit vic premetu, nejlepsi asi bude priklad:

<b>Ucitel:</b> (rc_uc, jm_uc, katedra)
rc1, "Pavel", "KSI"
rc2, "Pepa", "KSI"
rc3, "Jaja", "KAM"

<b>Rozvrh:</b> (kod, rc_uc,hodin)
001, rc1, 3
002, rc2, 1
003, rc2, 2
007, rc3, 3

...pokud nejsem uz uplne blby, tak by Tvuj dotaz vratil 2, pricemz spravna logicka odpoved je 3 (jak Pavel tak Pepa uci kazdy celkem 3 hodiny)

Kód: Vybrat vše

SELECT AVG(suma)
  FROM (
    SELECT rc_ucitele, SUM(hodin) AS suma
      FROM Rozvrh NATURAL JOIN Ucitel
      WHERE katedra = 'KSI'
      GROUP BY rc_ucitele
  )
tohle by mělo běhat

od Myshaak » 7. 6. 2007 13:26

Diky za pokus! ;) Ale asi jsi me spatne pochopil, jeden ucitel muze ucit vic premetu, nejlepsi asi bude priklad:

<b>Ucitel:</b> (rc_uc, jm_uc, katedra)
rc1, "Pavel", "KSI"
rc2, "Pepa", "KSI"
rc3, "Jaja", "KAM"

<b>Rozvrh:</b> (kod, rc_uc,hodin)
001, rc1, 3
002, rc2, 1
003, rc2, 2
007, rc3, 3

...pokud nejsem uz uplne blby, tak by Tvuj dotaz vratil 2, pricemz spravna logicka odpoved je 3 (jak Pavel tak Pepa uci kazdy celkem 3 hodiny)

od Pz » 7. 6. 2007 01:00

SELECT AVG(hodin)
FROM (Rozvrh NATURAL JOIN Ucitel)
WHERE katedra = 'KSI'
GROUP BY katedra


mozna.. podle vysledku pisemky bych to mel pry umet ;)

agr. fce

od Myshaak » 6. 6. 2007 18:19

Zdar! Mam celkem problem s tyma agregac. fcema. Mohl by nekdo poradit, jak vyresil jeden priklad? :)

Mam tabulky:
Rozvrh(kod_pred,rc_ucitele,kdy,kde,hodin)
Ucitel(rc_ucitele,jm_ucitele,katedra)

a chci zjistit prumerny pocet hodin, ktere uci ucitel z KSI. JAK??
(logicky bych asi potreboval nejprve pro kazdeho z KSI udelat soucet jejich hodin a z tech souctu pak udelat prumer... ale treba -teda urcite- to jde taky jinak, ja nevim, proto se ptam ;) )

Nahoru