【发布时间】:2015-07-03 12:40:23
【问题描述】:
我有一个之前的问题得到了回答,但是当应用答案时,我的 tempdb.mdf 文件膨胀到超过 500 个演出。我正在使用一个大型数据库,但不是那么大(所有表的总数约为 800 gigs)。
为了减小大小,我将日期缩小到 1 个表(避免连接)。
这是我的查询:
SELECT
cast ([date_] as date) date_
,cast ([expDate] as date) expDate
,[strike]
,[putCall]
,[eqId]
,[ivMid] iv
,[delta]
,[close_],
MIN(ivMid) OVER (Partition by eqid, date_, expDate) as MinIV
FROM
[CRC].[dbo].[***minsmall]
GROUP BY
date_, expDate, strike, putCall, eqid, ivMid, delta, close_
它几乎让我到达了我想要的位置,只是我没有得到带有 min (iv) 的特定单行,而是将 min(iv) 作为列添加到所有行。
这是一个小样本:
date_ expDate strike putCall eqId iv delta close_ MinIV
2008-01-02 2008-01-19 25.000 C 7 0.9853 0.9788 37.380005 0.3472
2008-01-02 2008-01-19 25.000 P 7 0.9319 -0.0171 37.380005 0.3472
2008-01-02 2008-01-19 30.000 C 7 0.5727 0.9697 37.380005 0.3472
2008-01-02 2008-01-19 30.000 P 7 0.6316 -0.0451 37.380005 0.3472
2008-01-02 2008-01-19 35.000 C 7 0.3854 0.8062 37.380005 0.3472
2008-01-02 2008-01-19 35.000 P 7 0.4022 -0.2087 37.380005 0.3472
2008-01-02 2008-01-19 40.000 C 7 0.3472 0.199 37.380005 0.3472
2008-01-02 2008-01-19 40.000 P 7 0.366 -0.7918 37.380005 0.3472
2008-01-02 2008-02-16 25.000 C 7 0.6306 0.9752 37.380005 0.37
2008-01-02 2008-02-16 25.000 P 7 0.6463 -0.0281 37.380005 0.37
2008-01-02 2008-02-16 30.000 C 7 0.5146 0.9097 37.380005 0.37
2008-01-02 2008-02-16 30.000 P 7 0.5083 -0.0897 37.380005 0.37
2008-01-02 2008-02-16 35.000 C 7 0.4065 0.7136 37.380005 0.37
2008-01-02 2008-02-16 35.000 P 7 0.4127 -0.2923 37.380005 0.37
2008-01-02 2008-02-16 40.000 C 7 0.3801 0.3401 37.380005 0.37
2008-01-02 2008-02-16 40.000 P 7 0.37 -0.6735 37.380005 0.37
我想要的是简单地提取这一行:
2008-01-02 2008-01-19 40.000 C 7 0.3472 0.199 37.380005 0.3472
对于每个给定的“eqid, date_, expDate”组
我尝试添加这个语句:
where ivMid = MinIV
在 group by 语句上方,但我收到一条错误消息
任何帮助将不胜感激!
【问题讨论】:
标签: sql sql-server group-by