Я пытаюсь понять этот код из: Стандартное отклонение для SQLite .
create table t (row int);
insert into t values (1),(2),(3);
SELECT AVG((t.row - sub.a) * (t.row - sub.a)) as var from t,
(SELECT AVG(row) AS a FROM t) AS sub;
0.666666666666667
Он вычисляет дисперсию заданных значений (я знаю, что это не таквычислить непредвзятую оценку, это не оспаривается).
Мне трудно искать "Sqlite AS" в поисковых системах, как вы можете себе представить ... пожалуйста, предложите лучшие условия поиска, если вы их знаете.В любом случае, как это выражение анализируется?Я не знаком с тем, чтобы ставить запятые между операторами выбора, такими как
SELECT ..., SELECT ...;
Чтобы выражение имело смысл, необходимо определить sub.a
, прежде чем можно будет выполнить первый оператор выбора.Означает ли это, что Sqlite анализирует эти утверждения справа налево?Или он анализирует слева направо, а затем понимает, что второй должен быть оценен первым?Меня также смущает, почему sub
не печатается.Являются ли результаты
SELECT ..., SELECT ...;
только результатом первого оператора выбора?