gpt4 book ai didi

mysql - 分组最大值

转载 作者:可可西里 更新时间:2023-11-01 06:31:01 24 4
gpt4 key购买 nike

我有一个表,我试图从中检索每个证券的最新位置:

表格:

我创建表的查询:SELECT id, security, buy_date FROM positions WHERE client_id = 4

+-------+----------+------------+
| id | security | buy_date |
+-------+----------+------------+
| 26 | PCS | 2012-02-08 |
| 27 | PCS | 2013-01-19 |
| 28 | RDN | 2012-04-17 |
| 29 | RDN | 2012-05-19 |
| 30 | RDN | 2012-08-18 |
| 31 | RDN | 2012-09-19 |
| 32 | HK | 2012-09-25 |
| 33 | HK | 2012-11-13 |
| 34 | HK | 2013-01-19 |
| 35 | SGI | 2013-01-17 |
| 36 | SGI | 2013-02-16 |
| 18084 | KERX | 2013-02-20 |
| 18249 | KERX | 0000-00-00 |
+-------+----------+------------+

我一直在搞乱基于 this page 的查询版本,但我似乎无法获得我正在寻找的结果。

这是我一直在尝试的:

SELECT t1.id, t1.security, t1.buy_date 
FROM positions t1
WHERE buy_date = (SELECT MAX(t2.buy_date)
FROM positions t2
WHERE t1.security = t2.security)

但这只会返回我:

+-------+----------+------------+
| id | security | buy_date |
+-------+----------+------------+
| 27 | PCS | 2013-01-19 |
+-------+----------+------------+

我正在尝试获取每只证券的最大/最新购买日期,因此对于具有最近购买日期的每只证券,结果将有一行。非常感谢任何帮助。

编辑:头寸 ID 必须与最大购买日期一起返回。

最佳答案

您可以使用此查询。您可以在 75% 的时间内取得成果。我检查了更多数据集。子查询需要更多时间。

SELECT p1.id, 
p1.security,
p1.buy_date
FROM positions p1
left join
positions p2
on p1.security = p2.security
and p1.buy_date < p2.buy_date
where
p2.id is null;

SQL-Fiddle link

关于mysql - 分组最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15211479/

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