开发者社区> 问答> 正文

SQL查询以在同一查询中查找值,日期和公司之间的最小值和最大值

这是从当前日期开始每10天在同一查询中查找股票的历史最高价和最低价。以下是数据。我试过查询,但所有行的高低相同。需要针对每只股票计算10天的最高价和最低价。

RDBMS-SQL Server 2014年

注意:如果需要,持续时间可能会超过30到2个月,即... 30天。或60天。例如,最近10天的输出必须类似于ABB,16-12-2019,1480(MaxClose),1222(MinClose)(测试数据)。

+------+------------+-------------+
| Name |    Date    |    Close    |
+------+------------+-------------+
| ABB  | 26-12-2019 | 1272.15     |
| ABB  | 24-12-2019 | 1260.15     |
| ABB  | 23-12-2019 | 1261.3      |
| ABB  | 20-12-2019 | 1262        |
| ABB  | 19-12-2019 | 1476        |
| ABB  | 18-12-2019 | 1451.45     |
| ABB  | 17-12-2019 | 1474.4      |
| ABB  | 16-12-2019 | 1480.4      |
| ABB  | 13-12-2019 | 1487.25     |
| ABB  | 12-12-2019 | 1484.5      |
| INFY | 26-12-2019 | 73041.66667 |
| INFY | 24-12-2019 | 73038.33333 |
| INFY | 23-12-2019 | 73036.66667 |
| INFY | 20-12-2019 | 73031.66667 |
| INFY | 19-12-2019 | 73030       |
| INFY | 18-12-2019 | 73028.33333 |
| INFY | 17-12-2019 | 73026.66667 |
| INFY | 16-12-2019 | 73025       |
| INFY | 13-12-2019 | 73020       |
| INFY | 12-12-2019 | 73018.33333 |
+------+------------+-------------+

我尝试过但没有运气的查询

select  max([close]) over (PARTITION BY name) AS MaxClose,
        min([close]) over (PARTITION BY name) AS MinClose,
        [Date],
        name
from    historic
where   [DATE] between   [DATE] -30 and [DATE]
        and name='ABB'
group by [Date],
        [NAME],
        [close]
order by [DATE] desc

展开
收起
祖安文状元 2020-01-04 15:04:31 846 0
1 条回答
写回答
取消 提交回答
  • 问题在于这gsm_kpis不是DataFrame,而是字典列表。

    如果您改为

    gsm_kpis = pd.read_sql('SELECT * FROM [myDB].[dbo].[mnm_rotterdam_5_daily_details-20191216081027]',
                           engine)
    那么您将有一个DataFrame和
    
    availble_cell = gsm_kpis['CellName'].unique()
    
    
    2020-01-04 15:07:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载