Код запрашивает два столбца из перекрестного соединения двух таблиц:
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_Length
, AVGtbl.Species
, AVGtbl.AVGcol
).
Предложение where
верхнего уровня select
оперирует этими четырьмя.