当前位置: 首页 > news >正文

用 SQL 找出某只股票连续上涨的最长天数

涉及多张中间表:

SELECT MAX(consecutive_day)
FROM (SELECT COUNT(*) as consecutive_dayFROM (SELECT trade_date, SUM(rise_mark) OVER (ORDER BY trade_date) AS days_no_gainFROM (SELECT trade_date,CASEWHEN closing_price > LAG(closing_price) OVER (ORDER BY trade_date)THEN 0ELSE 1 END AS rise_markFROM stack_price) subquery1) subquery2GROUP BY days_no_gain) subquery3;

Over 语法

SELECTproduct_id,sale_date,sale_amount,SUM(sale_amount) OVER (PARTITION BY product_id ORDER BY sale_date) AS total_sales,SUM(sale_amount) OVER (PARTITION BY product_id) AS running_total
FROMsales;

basic:

order_id | customer_id | order_amount
-------------------------------------
1        | 1           | 100
2        | 1           | 150
3        | 2           | 200
4        | 2           | 50
5        | 2           | 120

result:

order_id | customer_id | order_amount | total_amount | running_total
-------------------------------------------------------------------
1        | 1           | 100          | 100          | 250
2        | 1           | 150          | 250          | 250
3        | 2           | 200          | 200          | 370
4        | 2           | 50           | 250          | 370
5        | 2           | 120          | 370          | 370

Window function

A window function is a type of function in SQL that performs calculations across a set of rows called a “window.” The window is defined by the OVER clause, which specifies the partitioning and ordering of the rows.

SUM(order_amount) OVER (PARTITION BY customer_id ORDER BY order_id):

SUM(order_amount): This is the window function itself, in this case, the SUM function is used to calculate the sum of the order_amount.
OVER: It introduces the window function and specifies the window’s characteristics.
PARTITION BY customer_id: This clause divides the rows into separate partitions based on the customer_id. Each partition will have its own calculation of the sum.
ORDER BY order_id: This clause determines the order in which the rows are processed within each partition. In this case, it orders the rows by the order_id.
SUM(order_amount) OVER (PARTITION BY customer_id):

This is another usage of the SUM window function, but without specifying the ordering using ORDER BY. Without the ORDER BY clause, the entire partition is considered, and the calculation is performed on all rows with the same customer_id.
The window function, in combination with the OVER clause, allows us to perform calculations within specific partitions and orderings defined by the columns specified. It provides a way to aggregate or calculate values based on a subset of rows without collapsing the result set or using subqueries.

Other common window functions include ROW_NUMBER(), AVG(), MIN(), MAX(), and LEAD()/LAG(), among others. Each function has its own specific purpose and behavior within the window frame defined by the OVER clause.

OLAP / OLTP

SQL 作为查询语言而发明, 名字叫 “结构化查询”(structured query), 数学基础是 “关系模型”, 没有考虑复杂计算 (与之相对的是离散数学, 把 “数据存储 + 数据计算” 做在一起)

近年来, 数据处理和计算的需求越来越大, 于是 OLAP(联机分析处理)和 OLTP(联机事务处理)的概念就诞生了.

  • OLAP: Online Analytical Processing.
  • OLTP: Online Transaction Processing.

它们基于数据库, 属于"数据库 + 计算层".

处理海量数据, 有效率瓶颈.

http://www.lryc.cn/news/191869.html

相关文章:

  • Vue 绑定 class 与 style
  • 【微服务部署】九、使用Docker Compose搭建高可用双机热备MySQL数据库
  • HTTP Basic 认证
  • 计算机网络第2章-HTTP和Web协议(2)
  • css3 table表格
  • 【【萌新的SOC学习之AXI DMA环路测试介绍】】
  • 07 | @Entity 之间的关联关系注解如何正确使用?
  • 深入理解AQS之ReentrantLock源码分析
  • 微软宣布延长Azure支持Apache Cassandra 3.11时间到2024年
  • cv_bridge和opencv 记录
  • 关于OWL-carousel插件在ajax调用后需要重新实例化问题(页面无轮播效果)
  • day4作业
  • SSMS中的SQL sever代理
  • 估算总体标准差的极差均值估计法sigma = R/d2
  • JavaScript之正则表达式
  • Spring实战 | Spring AOP核心功能分析之葵花宝典
  • linux之/etc/skel目录
  • 文件介绍---C语言编程
  • 软考 系统架构设计师系列知识点之特定领域软件体系结构DSSA(6)
  • TensorFlow入门(二十三、退化学习率)
  • 登录中获取验证码的节流
  • spring boot 实现Minio分片上传
  • 2023年09月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • docker-compose 部署示例
  • 新版WordPress插件短视频去水印小程序源码
  • 如何提高MES系统的落地成功率?
  • private key ssh连接服务器
  • PDF-Word-图片等的互相转换
  • 【VR开发】【Unity】0-课程简介和概述
  • Java面试题-Java核心基础-第三天(基本数据类型)