不是單組分組函數(shù)怎么解決 oracle ORA-00937: 非單組分組函數(shù)?
oracle ORA-00937: 非單組分組函數(shù)?這種錯誤報告通常使用聚合函數(shù),如count和sum,但不使用groupby來聲明分組模式。例如,有一個學(xué)生表。字段包括:班級編號、學(xué)生編號和學(xué)生姓名
oracle ORA-00937: 非單組分組函數(shù)?
這種錯誤報告通常使用聚合函數(shù),如count和sum,但不使用groupby來聲明分組模式。
例如,有一個學(xué)生表。字段包括:班級編號、學(xué)生編號和學(xué)生姓名。現(xiàn)在我們需要知道每個班有多少人。如果查詢語句是這樣的:
從學(xué)生表中選擇班級編號,計數(shù)(學(xué)生編號)
,我們必須報告一個錯誤。我們必須告訴數(shù)據(jù)庫根據(jù)哪個字段進行分組。正確的書寫方法是:
選擇班級號,從學(xué)生表中按班級號分組計數(shù)(學(xué)生號)
不是單一的分組函數(shù)。通常,當(dāng)在數(shù)據(jù)庫中執(zhí)行查詢語句,并且不定期使用sum、AVG和count等聚合函數(shù)時,會報告錯誤。
例如,我們需要計算每個學(xué)生的最終分數(shù):從成績表中選擇姓名、總和(單科分數(shù))和總分。這樣,將報告錯誤。必須使用group by來聲明要用作分組計算基礎(chǔ)的字段。正確的寫作方法是:從成績表中選擇姓名、總和(單科成績)作為總分,按姓名分組。
現(xiàn)在名字不夠,還要加班級,所以寫:從成績表中選擇班級、姓名、總和(單科成績)作為總分,按姓名分組,實際又報錯了。
這是因為類只放在查詢列中,并且沒有用group by聲明。所以它應(yīng)該是:從成績表中選擇班級,姓名,和作為總分,按班級分組,姓名。