gpt4 book ai didi

sql - SQLite名称和使用临时表达式

转载 作者:行者123 更新时间:2023-12-03 19:13:52 28 4
gpt4 key购买 nike

我正在尝试从以下地址了解此代码: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 AS” ...如果您知道的话,请提出更好的搜索条件。无论如何,该表达式如何解析?我不喜欢在选择语句之间加上逗号

SELECT ..., SELECT ...;


为了使表达式有意义,必须在执行第一个select语句之前定义 sub.a。这是否意味着Sqlite从右到左解析这些语句?还是从左到右解析然后意识到第二个需要首先评估?我也很困惑为什么 sub没有显示出来。是结果

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子句中为表/子查询提供名称。

关于sql - SQLite名称和使用临时表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54520735/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com