gpt4 book ai didi

KDB 优雅地仅选择列上具有最大值的行

转载 作者:行者123 更新时间:2023-12-04 19:31:56 25 4
gpt4 key购买 nike

我有这张股票价格表(这里是简化版):

+----------+--------+-------+
| Time | Ticker | Price |
+----------+--------+-------+
| 10:00:00 | A | 5 |
| 10:00:01 | A | 6 |
| 10:00:00 | B | 3 |
+----------+--------+-------+

我想按时间最长的 Ticker 选择行组,例如
+----------+--------+-------+
| Time | Ticker | Price |
+----------+--------+-------+
| 10:00:01 | A | 6 |
| 10:00:00 | B | 3 |
+----------+--------+-------+

我知道如何在 SQL 中做到这一点,可以找到类似的问题 here ,但我不知道如何在 KDB 中优雅地做到这一点。

我有一个可以进行两次选择的解决方案:
select first Time, first Ticker, first Price by Ticker from (`Time xdesc select Time, Ticker, Price from table where date=2018.06.21)

有没有更干净的解决方案?

最佳答案

每当您进行涉及 by 的双重选择时,这是一个好兆头,您可以改用 fby

q)t:([]time:10:00:00 10:00:01 10:00:00;ticker:`A`A`B;price:5 6 3)
q)
q)select from t where time=(max;time) fby ticker
time ticker price
---------------------
10:00:01 A 6
10:00:00 B 3

Kdb 还提供了一种获取最后记录的快捷方式,只要您使用没有指定列的 select by,但这种方法并不通用或可定制
q)select by ticker from t
ticker| time price
------| --------------
A | 10:00:01 6
B | 10:00:00 3

关于KDB 优雅地仅选择列上具有最大值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50977287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com