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

大家好,我仍在学习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 '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”项后面加了一个逗号…要了解子查询的结果集是什么样子,您可以只执行您感兴趣的一个子查询。您需要询问查询的结果是什么。你必须试着运行它,看看你得到了什么输出?