我想了解此代码:Standard Deviation for 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作为”如你所想......请提出更好的搜索词,如果你知道任何。在任何情况下,这是怎么表达分析?我不熟悉,把select语句等之间的逗号
SELECT ..., SELECT ...;
为了使表达变得有意义,可以执行第一个SELECT语句之前sub.a
必须定义。这是否意味着SQLite是解析这些语句从右到左?或者它解析由左到右,然后认识到,第二个需要先评估?我也搞不清楚为什么没有出现印刷sub
。是的结果
SELECT ..., SELECT ...;
只有第一个SELECT语句的结果?
它是否有助于看到这样写的代码?
SELECT AVG((t.row - sub.a) * (t.row - sub.a)) as var
FROM t CROSS JOIN
(SELECT AVG(row) AS a FROM t) sub;
该,
是CROSS JOIN
。 ,
是 - 通过SQL标准 - 古老的语法。显式JOIN
已经存在了几十年,强烈推荐。
AS
用于定义别名,但是是可选的。我用它仅列别名 - 也就是说,给人一种表达在SELECT
的名称。它也使用了FROM
子句中给表/子查询的名称。