SQL表转换

来源:互联网 发布:linux wc 编辑:程序博客网 时间:2024/06/05 18:59

1.如上所示,子查询嵌套在另一个查询中,以便给我们所需的结果。
使用与上述示例相同的模式,查找有关起点高度小于2000英尺的航班的航班信息。
select *from flights
where origin in(
select code
from airports
where elevation<2000);
2.使用一个子查询,查找以星期和月份为单位的飞行平均总距离。
确保将外部查询别名为average_distance,将内部查询别名为flight_distance。
SELECT a.dep_month,
a.dep_day_of_week,
AVG(a.flight_distance) AS average_distance
FROM (
SELECT dep_month,
dep_day_of_week,
dep_date,
sum(distance) AS flight_distance
FROM flights
GROUP BY 1,2,3
) a
GROUP BY 1,2
ORDER BY 1,2;
总结: 子查询用于通过在另一个查询中嵌套一个查询来完成SQL转换。

  • 非相关子查询是可以独立于外部查询运行的子查询,可用于完成多步转换。

  • 相关子查询是不能独立于外部查询运行的子查询。 相关子查询中的操作顺序如下:

在外部查询中处理一行。
然后,对于外部查询中的特定行,子查询将被执行。
3.有时,为了基于数据回答某些问题,我们需要将两个表合并在一起,然后查询合并的结果。 也许我们有两个表格,其中包含有关我们想要组合的电子商务商店中的产品的信息。
这样做有两种方法:
合并行,称为连接。
合并列,称为联合。
假设我们是一家不断增长的电子商务商店,最近又收购了另一家专卖店,以使我们的产品多样化。 产品数据仍然存在于两个单独的表中:legacy_products表和new_products表。 要从两个表中获取产品名称的完整列表,我们可以执行以下联合。
SELECT brand FROM legacy_products
UNION
SELECT brand FROM new_products;
4.使用相同的模式,使用子查询来查找order_item和order_items_historic表的平均销售价格。
SELECT id, avg(a.sale_price) FROM (
SELECT id, sale_price FROM order_items
UNION ALL
SELECT id, sale_price FROM order_items_historic) AS a
GROUP BY 1;
总结:SQL中的Set Operations。 到目前为止我们可以推广什么?

UNION子句允许我们在查询中使用来自多个表的信息。
UNION ALL子句允许我们在查询中使用来自多个表的信息,包括重复值。
INTERSECT用于组合两个SELECT语句,但仅返回与第一个SELECT语句中与第一个SELECT语句相同的第一个SELECT语句的行。
EXCEPT返回从第一个语句返回不同于第二个语句输出的行

总结:条件聚合是聚合函数,根据给定的一组条件计算结果集。
NULL可用于表示空字段值
CASE语句允许数据的自定义分类
可以在聚合(如SUM()和COUNT())内使用CASE语句来提供过滤的度量

总结:SQL中的日期,数字和字符串函数。 到目前为止我们可以推广什么?

日期功能:

约会时间; 返回指定列的日期和时间。 这可以修改为仅返回日期或仅返回时间。
DATETIME(time1,+ X hours,Y minutes,Z days):将特定列增加给定的小时,分钟或天数。
数字功能:

(number1 + number2);:相应地返回两个数字或其他数学运算的和。
CAST(number1 AS REAL)/ number2;:通过将数字输入之一转换为实数,将结果作为实数返回
ROUND(number,precision);:将舍入的数值返回到指定的下一个值。
字符串函数:

‘string1’|| ”|| ‘string2’;:连接string1和string 2,之间有一个空格。
REPLACE(string,from_string,to_string):返回字符串的所有出现字符串from_string替换为字符串to_string。

原创粉丝点击