为什么SQL要求我指定要对哪些属性进行分组?为什么不能只使用所有非聚合?
如果一个属性没有聚合并且不在 GROUP BY 子句中,那么不确定元组的选择将是唯一的选择,前提是元组是无序的(mysql做到了这一点),这是一个巨大的难题。据我所知,Postgresql要求必须将未出现在 GROUP BY 中的所有属性进行汇总,以加强其多余性。
您不必按选择的完全相同的内容进行分组,例如:
SQL:select priority,count(*) from rule_class group by priority PRIORITY COUNT(*) 70 1 50 4 30 1 90 2 10 4 SQL:select decode(priority,50,'Norm','Odd'),count(*) from rule_class group by priority DECO COUNT(*) Odd 1 Norm 4 Odd 1 Odd 2 Odd 4 SQL:select decode(priority,50,'Norm','Odd'),count(*) from rule_class group by decode(priority,50,'Norm','Odd') DECO COUNT(*) Norm 4 Odd 8