sql - 获取在过去 6 个月内价格上涨 5% 的符号
问题描述
我有以下两张每天跟踪股票价格的表格
CREATE TABLE "public"."security" (
"symbol" text NOT NULL,
"security" text NOT NULL
CONSTRAINT "security_pk" PRIMARY KEY ("symbol")
)
以及下表每天跟踪证券价格
CREATE TABLE "public"."security_data" (
"ticker" text NOT NULL,
"time" date NOT NULL,
"low" numeric NOT NULL,
"high" numeric NOT NULL,
"open" numeric NOT NULL,
"close" numeric NOT NULL,
"volume" double precision,
CONSTRAINT "security_data_pkey" PRIMARY KEY ("ticker", "time"),
CONSTRAINT "security_data_ticker_fkey" FOREIGN KEY (ticker) REFERENCES security(symbol) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE
)
我想提出一个 SQL 查询,该查询返回上周平均价格比过去 6 个月平均价格高出 5% 以上的股票的“符号”列表。我想不出编写此查询的最佳方法。是否可以在一个查询中编写此内容?如果有怎么办?
解决方案
您可以使用聚合。假设您close
的列代表价格,您可以执行以下操作:
select ticker
from security_date
where time > current_date - '6 month'::interval
group by ticker
having avg(close) filter(where time > current_date - '1 week'::interval)
> 1.05 * avg(close)
看起来您不需要“实时”表来获得所需的结果。
推荐阅读
- powershell - 如何将此命令放入powershell
- apache-spark - 如何自动为我的 csv 数据设置架构?
- javascript - 如何将数组中的下一个值加载到我的函数中
- python - 将数据附加到 csv 列 python
- java - 片段问题,片段不兼容
- jupyter-notebook - 我无法在 Jupyter 中创建新文件
- ag-grid-react - 可以将 ag-grid agSelectCellEditor 配置为允许选择多个选项吗?
- reactjs - 在 React 中单击按钮添加 1
- html - 更改 HTML 选择箭头背景颜色
- react-native - 如何在 React Native 中同时使用 headerRight 和 headerLeft?