期间获取平均数
回答
SELECT SUM(volume)/10 FROM table_name
Where date Between Cast('7/18/13 12:01:01' As DateTime) And Cast('7/08/13 12:01:01' as DateTime)
对不起......我的意思是股票的平均交易量, 的股票,而不是整个股票市场的平均交易量。 –
你有一个错误的语法,请删除第一行 –
末尾的分号,分号很明显。大声笑 –
SELECT AVG(volume) FROM mytable WHERE date >= (CURDATE() - INTERVAL 10 DAY)
编辑:
最近10天剂量组,他们的平均水平。
SELECT AVG(volume) FROM mytable GROUP BY date ORDER BY date DESC LIMIT 10
将返回过去10天,而不是最后10个交易日。我是否必须创建一张表来记录交易日? –
可能“按日期分组”可以帮忙吗? –
我已编辑答案。如果你想获得stockId值,我认为可以使用GROUP_CONCAT。 –
http://sqlfiddle.com/#!6/c8dbb/4
CREATE TABLE Stocks
([StockId] int, [Date] DateTime, [Volume] int)
;
INSERT INTO Stocks
([StockId], [Date], [Volume])
VALUES
(1, GetDate(), 1000),
(1, GetDate()+1, 2000),
(1, GetDate()+2, 4000),
(2, GetDate(), 1000),
(2, GetDate()+1, 1000),
(2, GetDate()+2, 500)
;
Select StockId, AVG(Volume) [AverageVolume]
FROM Stocks
WHERE [Date] >= DATEADD(dd, 0, DATEDIFF(dd, 0, GetDate())) - 10
Group by StockId
Order by StockId
哇。 sqlfiddle.com真的很酷。 –
GetDate()可能需要根据您的要求进行更改,以仅返回日期部分和午夜时间部分。我将在一分钟内更改代码以反映这一点。 – Dodecapus
它正在返回日子,而不是交易日。 –
有趣的小查询写。那就是:
SELECT AVG(x.Volume) FROM (SELECT Volume FROM StockTable WHERE Date BETWEEN
DATE_ADD(NOW(), INTERVAL -10 DAY) AND NOW())x
这是我用来建立一个样品表SQLFiddle
关闭的工作:
CREATE TABLE StockTable (ID INT PRIMARY KEY AUTO_INCREMENT NOT NULL, Date DATETIME, Volume INT);
INSERT INTO StockTable (Date, Volume) VALUES (DATE_ADD(NOW(), INTERVAL 12 DAY), 1000), (DATE_ADD(NOW(), INTERVAL 1 DAY), 5000),
(DATE_ADD(NOW(), INTERVAL 0 DAY), 3000), (DATE_ADD(NOW(), INTERVAL -11 DAY), 6000), (DATE_ADD(NOW(), INTERVAL -5 DAY), 4000), (DATE_ADD(NOW(), INTERVAL 7 DAY), 9000);
这里是行动的查询SQLFiddle的链接。查询背后
理念:我创建一个派生表x
其中只包含内近10天的卷。然后我计算该表格中包含的卷的平均值。瞧!
编辑:
我特别意识到你是通过其他的答案和评论看完后找什么。您正在寻找在过去10天内股票市场中每只股票的平均。
我建的样品台客这样的:
CREATE TABLE StockTable (StockId INT NOT NULL, Date DATETIME, Volume INT);
INSERT INTO StockTable (StockId, Date, Volume) VALUES (1, DATE_ADD(NOW(), INTERVAL 6
DAY), 1000), (2, DATE_ADD(NOW(), INTERVAL 1 DAY), 5000),
(2, DATE_ADD(NOW(), INTERVAL 0 DAY), 3000), (3, DATE_ADD(NOW(), INTERVAL -8 DAY),
6000), (1, DATE_ADD(NOW(), INTERVAL -5 DAY), 4000),
(2, DATE_ADD(NOW(), INTERVAL 7 DAY), 9000);
和查询,让您的结果是:
SELECT StockId, AVG(Volume) FROM StockTable WHERE Date BETWEEN DATE_ADD(NOW(),
INTERVAL -10 DAY) AND NOW() GROUP BY StockId
Here是在行动查询SQLFiddle的链接。
我基于这个Dodecapus的答案,并基于您给其他答案的评论。我只是在回答中包含查询,但请查看sqlfiddle以获取有关数据的工作示例。
http://sqlfiddle.com/#!6/91599/2
SELECT
StockId
,AVG(Volume) [AverageVolume]
FROM Stocks
WHERE [Date] IN
(
SELECT DISTINCT TOP 10 [Date] FROM Stocks ORDER BY [Date] DESC
)
GROUP BY StockId
ORDER BY StockId
此,如果有至少一个股票,每交易日成交量纪录只会工作。
优秀的解释,你看起来很帅! –
谢谢!如果我的答案和英俊的外表是解决您的问题,请随时通过接受它来表示您的赞赏:) –
- 1. 获取加权平均日期值?
- 2. 平均日期间隔php
- 3. SQL查询来获取平均时间
- 4. elasticsearch平均查询和获取时间
- 5. awk脚本获取时间平均
- 6. 获取日期时间从/到特定小时之间的平均数
- 7. SQLite:获取两个日期之间的平均工作日
- 8. 指定时间序列中的星期数以获取每周平均价格
- 9. 如何从php的日期时间字段中获取平均日期?
- 10. 从dnorm获取平均值
- 11. 获取资金的平均
- 12. MySQL - 获取平均每行
- 13. 获取平均此查询
- 14. 使用PHP获取日期差异数组的平均值
- 15. 获取数字的平均值
- 16. 获取一个条目的几个日期之间的平均时间
- 17. 在TSQL中获取连续日期列表之间的平均时间
- 18. 在SQL中获取时间之间的平均时间
- 19. 获取平均值按日期(失踪日期)
- 20. 获取一列日期的平均值作为日期
- 21. 获取R中时间戳数据的平均值
- 22. 平均时间
- 23. Postgres平均时间数据
- 24. 按平均日期排序(时间戳)
- 25. Access中的日期时间平均值
- 26. HTTP Cookie过期时间(平均,最大,...)
- 27. SQL查找日期间的平均值
- 28. 计算Ruby中日期时间之间的平均天数
- 29. 从DB获取平均日期时间并从另一个日期时间减去一个日期
- 30. PHP从mysql中获取的每日平均值的平均值
通过编写查询:) – Krishna
或抓取结果之间的时间段,并使用任何编程语言,你正在使用总和除以数量。 – celwell
我想知道可以用单个查询来完成吗? –