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