avatar
wyndham 有啥好卡?# Money - 海外理财
I*9
1
用SQL计算rows之间的差值:
原始数据是这样:
Stock date price
A 7/20 10
A 7/19 9
A 7/18 11
B 7/10 20
B 7/9 18
B 7/7 21
B 7/6 19
。。。。
结果数据里要计算当天的股票价格与该股票最近一次的股票价格的差值:
最后的结果数据应该是这样:
Stock date price price_change
A 7/20 10 1
A 7/19 9 -2
A 7/18 11 0 (因为它是最原始的股票价格)
B 7/10 20 2
B 7/9 18 -3
B 7/7 21 2
B 7/6 19 0
。。。。
因为该股票最近一次的时间没有规律,有可能是相差一天(如weekdays),也有可能是
相差两天(如周末),也有可能是相差三天(如节假日等)。所以该股票最近一次的股
票价格的查找只能在数据库里去查询。
请高手指点吧!
avatar
G*s
2
谢谢
avatar
s*n
3
不是高手,不过你可以用SQL ANALYTIC FUNCTIONS.
PRICE- LAG(PRICE, 1, 0) OVER (PARTITION BY STOCK ORDER BY DATE DESC)
avatar
s*e
4
select T2.* ,
(
select sum(T2.price-T3.price) pc from T T3
where ( T3.date=(select max(T1.date) md from T T1
where T1.dateand T3.stock = T2.stock
) pricechange
from T T2

【在 I*********9 的大作中提到】
: 用SQL计算rows之间的差值:
: 原始数据是这样:
: Stock date price
: A 7/20 10
: A 7/19 9
: A 7/18 11
: B 7/10 20
: B 7/9 18
: B 7/7 21
: B 7/6 19

avatar
I*9
5
非常感谢上面两位的回复。真的是SQL达人。
SQL scirpts work well!结果完全正确。正是我要的答案。真是高人阿。就是给出了答
案,我还有些不明白,比如,为什么要用sum function等等。我辈需要进一步学习啊。
SQL ANALYTIC FUNCTIONS还没有试, 这个functions我以前没有用过。
再次感谢两位SQL高人!

【在 s******e 的大作中提到】
: select T2.* ,
: (
: select sum(T2.price-T3.price) pc from T T3
: where ( T3.date=(select max(T1.date) md from T T1
: where T1.date: and T3.stock = T2.stock
: ) pricechange
: from T T2

avatar
g*n
6
SQL developer jobs:
http://jobguiding.com/it-jobs/sql-developer.html

【在 I*********9 的大作中提到】
: 用SQL计算rows之间的差值:
: 原始数据是这样:
: Stock date price
: A 7/20 10
: A 7/19 9
: A 7/18 11
: B 7/10 20
: B 7/9 18
: B 7/7 21
: B 7/6 19

avatar
l*6
7
哪里有可以练习SQL编程的软件下载呢?一直没找到免费的
avatar
j*1
8
学哪个SQL?t-sql装个微软的MS SQL Server Express版就行,免费的。用他自带的
sample database和online教程学习。
sybase 的t-sql跟微软的差不多语法。
其他的mysql,sqlite也都大同小异,自己找免费的装吧

【在 l****6 的大作中提到】
: 哪里有可以练习SQL编程的软件下载呢?一直没找到免费的
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。