where為什么不能用聚合函數(shù) SQL中只要用到聚合函數(shù)就一定要用到group by嗎?
SQL中只要用到聚合函數(shù)就一定要用到group by嗎?分組依據(jù)。聚合函數(shù)是按group by分組后得到聚合函數(shù)的值。在groupby之后,您可以想象它必須是語法中除聚合函數(shù)之外的所有字段。例如,我們
SQL中只要用到聚合函數(shù)就一定要用到group by嗎?
分組依據(jù)。聚合函數(shù)是按group by分組后得到聚合函數(shù)的值。在groupby之后,您可以想象它必須是語法中除聚合函數(shù)之外的所有字段。例如,我們使用sum,例如employee表和department表。employee表包含employee number、employee name、salary和department number。Department表包含Department number和Department name。我們可以計算每個部門的工資總額。從“員工表”、“部門表”和“員工表所在的部門表”中選擇“部門名稱”、“總和(薪資)”。部門號=部門表。部門編號按部門名稱分組。另外,使用count aggregate函數(shù)計算每個部門的員工人數(shù)。從“員工表”、“員工表所在的部門表”中選擇“部門名稱”、“計數(shù)(員工編號)”。部門號=部門表。部門號分組依據(jù)另外,在全表搜索的情況下,如查找所有部門的員工總數(shù),不需要從員工表中選擇count(*)
分組依據(jù)的選擇列表項中不存在的列可以出現(xiàn)在分組依據(jù)的列表項中,反之亦然?!斑x擇”列表項中出現(xiàn)的所有列都必須出現(xiàn)在“分組依據(jù)”之后(聚合函數(shù)除外)
“分組依據(jù)”通常與聚合函數(shù)一起使用,例如“平均計數(shù)和”,使用group by的兩個元素:
(1)選擇后出現(xiàn)的字段在聚合函數(shù)或group by中。
(2)要篩選結(jié)果,可以使用where first、then group by first或group by first Having
不是一組分組函數(shù)。一般來說,在數(shù)據(jù)庫中執(zhí)行查詢語句時,如果不定期使用sum、AVG和count等聚合函數(shù),則會報告錯誤。
例如,我們需要計算每個學(xué)生的最終分?jǐn)?shù):從成績表中選擇姓名、總和(單科分?jǐn)?shù))和總分。這樣,將報告錯誤。必須使用group by來聲明要用作分組計算基礎(chǔ)的字段。正確的寫作方法是:從成績表中選擇姓名、總和(單科成績)作為總分,按姓名分組。
現(xiàn)在名字不夠,還要加班級,所以寫:從成績表中選擇班級、姓名、總和(單科成績)作為總分,按姓名分組,實際又報錯了。
這是因為類只放在查詢列中,并且沒有用group by聲明。所以它應(yīng)該是:從成績表中選擇班級,姓名,和作為總分,按班級分組,姓名。
group by和聚合函數(shù)用法?
如果其他字段的值相同,請使用Max或min
如果是一個數(shù)字,需要計算,請使用聚合函數(shù)
如果是其他字段,最好先將分組后的字段取出,形成一個臨時表,然后與原始表關(guān)聯(lián),得到其他值。