一朋友问我的,看着挺有意思,记录一下:

表item1,里面有上面三个字段,一共10条数据,接下来有两个相似的sql语句得到了不一样的查询结果。

表数据如下:

两个看似相同,结果不同的SQL逻辑

 

 两条SQL及查询结果:

两个看似相同,结果不同的SQL逻辑

 

 我的理解答:

SQL1 循环一遍,i表拿出每一列值去和j表相同列的平均值做比较

比如,i表拿出i.i_item_sk=4的列,i.i_current_price=1.35,满足 i_category=Children的行有三个,三个i_current_price取平均值是4.68,然后这个平均值的1.2倍和i.i_current_price=1.35比较大小判断是否满足条件。


SQL2 循环两遍,先是子查询里i和j做笛卡尔积得出集合k的平均值,然后i表拿出每一列去和k的平均值做比较

第二个SQL较为好理解,先是子查询算出两个表的关联结果求平均值,其实就一个平均值,然后i表中的每一列i.i_current_price和这个平均值的运算作比较,判断是否满足条件。

相关文章:

  • 2021-07-03
  • 2022-12-23
  • 2021-10-22
  • 2021-12-05
  • 2021-05-22
  • 2021-06-08
  • 2021-08-18
  • 2021-04-09
猜你喜欢
  • 2021-09-22
  • 2022-12-23
  • 2022-03-09
  • 2022-12-23
  • 2022-01-21
  • 2021-05-01
  • 2022-12-23
相关资源
相似解决方案