admin

SQL GROUP BY是否存在设计缺陷?

sql

为什么SQL要求我指定要对哪些属性进行分组?为什么不能只使用所有非聚合?

如果一个属性没有聚合并且不在 GROUP BY
子句中,那么不确定元组的选择将是唯一的选择,前提是元组是无序的(mysql做到了这一点),这是一个巨大的难题。据我所知,Postgresql要求必须将未出现在
GROUP BY 中的所有属性进行汇总,以加强其多余性。

  • 我是否遗漏了某些东西,还是这是一种语言设计缺陷,会导致松散的实现方式并使查询更难编写?
  • 如果我遗漏了什么,那么无法推断出组属性的查询示例是什么?听听

阅读 171

收藏
2021-05-10

共1个答案

admin

您不必按选择的完全相同的内容进行分组,例如:

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
2021-05-10