期間獲取平均數
回答
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. 獲取平均值
- 3. MYSQL平均日期時間
- 4. 平均日期間隔php
- 5. SQL日期時間平均
- 6. awk腳本獲取時間平均
- 7. SQL查詢來獲取平均時間
- 8. elasticsearch平均查詢和獲取時間
- 9. 獲取日期時間從/到特定小時之間的平均數
- 10. SQLite:獲取兩個日期之間的平均工作日
- 11. 指定時間序列中的星期數以獲取每週平均價格
- 12. 如何從php的日期時間字段中獲取平均日期?
- 13. 獲取平均此查詢
- 14. 從dnorm獲取平均值
- 15. 獲取資金的平均
- 16. MySQL - 獲取平均每行
- 17. 使用PHP獲取日期差異數組的平均值
- 18. DB2 - 獲得一組日期之間的平均時間
- 19. 在Python中獲取平均值函數
- 20. 獲取數字的平均值
- 21. 獲取一個條目的幾個日期之間的平均時間
- 22. 在TSQL中獲取連續日期列表之間的平均時間
- 23. 在SQL中獲取時間之間的平均時間
- 24. 獲取一列日期的平均值作爲日期
- 25. 獲取平均值按日期(失蹤日期)
- 26. 獲取R中時間戳數據的平均值
- 27. 平均時間
- 28. Postgres平均時間數據
- 29. HTTP Cookie過期時間(平均,最大,...)
- 30. SQL查找日期間的平均值
通過編寫查詢:) – Krishna
或抓取結果之間的時間段,並使用任何編程語言,你正在使用總和除以數量。 – celwell
我想知道可以用單個查詢來完成嗎? –