Sql 子查询输出
大家好,我仍在学习SQL子查询的细节,我想知道是否有人可以向我展示以下查询将产生的表列标题。试图弄清楚并可视化子查询是如何工作的。谢谢Sql 子查询输出,sql,subquery,Sql,Subquery,大家好,我仍在学习SQL子查询的细节,我想知道是否有人可以向我展示以下查询将产生的表列标题。试图弄清楚并可视化子查询是如何工作的。谢谢 SELECT t2.id, t2.type, t2.start AS exit, t2.last, t2.last_time AS entrnc, CASE WHEN res.fac IN ('Resort1', 'Resort2', 'Resort3','Resort4', ) THEN
SELECT
t2.id,
t2.type,
t2.start AS exit,
t2.last,
t2.last_time AS entrnc,
CASE WHEN res.fac IN ('Resort1', 'Resort2', 'Resort3','Resort4',
) THEN 'new_resort'
WHEN res.fac IS NULL THEN 'not_new_res'
ELSE 'other_resort' END AS gst
FROM
(SELECT
id,
start,
type,
Min(start) Over (PARTITION BY id, Cast(start AS DATE) ORDER BY start ROWS BETWEEN 1 Preceding AND 1 Preceding) AS last_time,
Min(type) Over (PARTITION BY id, Cast(start AS DATE) ORDER BY start ROWS BETWEEN 1 Preceding AND 1 Preceding) AS last
QUALIFY ( Min(type) Over (PARTITION BY id ORDER BY start ROWS BETWEEN 1 Preceding AND 1 Preceding) LIKE '%Entrance%')
FROM
(SELECT
f1.*
FROM foo f1
INNER JOIN (SELECT
id
FROM foo
WHERE type = 'Exit'
) AS f2
ON f1.id = f2.id
) t1
) t2
LEFT JOIN reservations res ON res.id = t2.id
WHERE t2.type = 'Exit'
AND t2.last LIKE '%Entrance%'
SQL子查询的工作方式类似于信息的“子集”。当您想以特定的方式“预先安排”数据,或准备/过滤“加入”数据时,这非常有用 如果您对SQL和Subselect非常陌生,那么您应该尝试理解更简单的情况 了解这一点的一个很好的方法是学习一点“知识”。下面是一个非常简单的示例来演示子查询的工作原理: 想象两张表:
product_description
product_code integer,
product_description varchar(50)
product_types
product_code integer,
prodcut_type varchar(50)
select
t1.product_description,
t2.product_type
from
(
select product_code, product_description from product_descriptions
) t1
inner join
(
select product_code, product_type from product_types
) t2
on
t1.product_code = t2.product_code
这不是一个“真实世界”的示例,因为此查询与以下查询相同:
select
t1.product_description,
t2.product_type
from
product_descriptions t1
inner join
product_types t2
on
t1.product_code = t2.product_code
但是理解子查询的行为实际上是非常好的。另外,用大而复杂的子选择“调试”查询的最佳方法是从内到外,分析每个子选择
您可以使用filter、Agegation和ranks,如您的示例所示
需要记住的一点是查询性能。尽管它是一种非常有用的资源,但在处理大量数据时,您必须非常仔细地规划查询
希望这能有所帮助
尊敬很抱歉,格式设置未通过!如果理解无格式太令人沮丧,请告诉我。添加sql语言的标记为什么有许多不同类型的引号字符?按照您的方式,它甚至无法编译。有错误-其中一个错误是在“Restors4”项后面加了一个逗号…要了解子查询的结果集是什么样子,您可以只执行您感兴趣的一个子查询。您需要询问查询的结果是什么。你必须试着运行它,看看你得到了什么输出?