簡體   English   中英

如何在SQL中定義的時間間隔內獲取隨機數據樣本

[英]How to get random samples of data within a defined interval of time in SQL

所以我做了一個sql查詢,在固定的時間間隔內返回一組隨機數據。 到目前為止,我能夠讓它在幾小時或幾天內工作。 但我不知道如何讓它在 X 小時或 X 分鍾內工作。

這是我的代碼:

    def getSampleSQL_trades(self, symbol, interval=None, n_samples=5):
    query = "SELECT a, price, qty, time, Temp_Main.time_group " \
            "FROM " \
            "(SELECT a, price, qty, time, TIMESTAMPDIFF(hour, min_time, time) as time_group " \
            "FROM {symbol}_trades," \
            "(SELECT MIN(time) as min_time " \
            "FROM {symbol}_trades) Temp) Temp_Main " \
            "INNER JOIN" \
            "(SELECT TIMESTAMPDIFF(hour, min_time, time) as time_group " \
            "FROM {symbol}_trades, " \
            "(SELECT MIN(time) as min_time " \
            "FROM {symbol}_trades) Temp " \
            "GROUP BY time_group " \
            "ORDER BY RAND() " \
            "LIMIT {n_s}) Temp2 " \
            "ON Temp2.time_group = Temp_Main.time_group " \
            "ORDER BY Temp_Main.time_group".format(symbol = symbol, n_s = n_samples)
    self.connect()
    df = pd.read_sql(sql=query, con=self.engine, index_col='a', parse_dates=['time'], columns=['time','price','qty'])
    self.disconnect()
    return df

是否可以選擇以秒為單位的間隔? 就像 param interval= 5 * (60)然后在 5 分鍾的間隔內對數據進行分組。

我找到了我正在尋找的解決方案,我使用了TRUNCATE

TRUNCATE(TIMESTAMPDIFF('Insert_Unit_here', time, new_time)/x, 0)

其中 x 是單位值,因此對於 5 分鍾間隔,它應該如下所示:

TRUNCATE(TIMESTAMPDIFF(MINUTE, time_1, time_2)/5, 0)

干杯,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM