Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysqlite中的嵌套select_Sqlite_R - Fatal编程技术网

mysqlite中的嵌套select

mysqlite中的嵌套select,sqlite,r,Sqlite,R,我正在使用来自的示例学习sqlite,我遇到了关于嵌套选择的示例3,但我不太理解代码: sqldf("select iris.Species '[Species]', avg(Sepal_Length) '[Avg of SLs > avg SL]' from iris, (select Species, avg(Sepal_Length) SLavg from iris group by Species) S

我正在使用来自的示例学习sqlite,我遇到了关于嵌套选择的示例3,但我不太理解代码:

sqldf("select iris.Species '[Species]',
              avg(Sepal_Length) '[Avg of SLs > avg SL]'
       from iris,
         (select Species, avg(Sepal_Length) SLavg
          from iris group by Species) SLavg
       where iris.Species = SLavg.Species
          and Sepal_Length > SLavg
       group by iris.Species")
我认为上面的代码试图:

  • 使用
    iris
    中的数据创建一个包含
    [物种]
    [SLs平均值>平均值SL]
    的表格(第1-3行)
  • 创建一个名为
    SLavg
    的表格,其中包含
    iris
    中每个物种的种类和平均萼片长度(第4-6行)

我想知道为什么第4-5行中出现了两次
SLavg
,我尝试删除
SLavg
,sqldf给了我
语句:没有这样的列:SLavg
语句:没有这样的列:SLavg.Species
代码从两个表的交叉连接中查询两列:

select c1,c2 from iris,T2 where .... group by ....
其中T2是一个子查询,用缩写“SLavg”表示:

select d1, d2 from iris group by ...... // subquery
SLavg同时用于子查询名和列名,这令人困惑。让我们给他们起不同的名字:

select 
    iris.Species '[Species]', avg(Sepal_Length) '[Avg of SLs > avg SL]'
from 
    iris, 
    (select Species, avg(Sepal_Length) AVGcol from iris group by Species) AVGtbl
where 
    iris.Species = AVGtbl.Species and Sepal_Length > AVGcol
group by 
    iris.Species
现在应该更容易理解了:

  • 子查询
    AVGtbl
    生成两列(
    Species
    AVGcol
  • iris
    AVGtbl
    的交叉连接产生四列(
    iris.Species
    iris.Sepal\u Length
    AVGtbl.Species
    AVGtbl.AVGcol
顶级
select
where
子句对这四个变量进行操作