标签: greatest-n-per-group

Oracle SQL查询:根据时间检索每个组的最新值

我在Oracle DB中有下表

id     date              quantity
1      2010-01-04 11:00  152
2      2010-01-04 11:00  210
1      2010-01-04 10:45  132
2      2010-01-04 10:45  318
4      2010-01-04 10:45  122
1      2010-01-04 10:30  1
3      2010-01-04 10:30  214
2      2010-01-04 10:30  5515
4      2010-01-04 10:30  210
Run Code Online (Sandbox Code Playgroud)

现在我想检索每个id的最新值(及其时间).示例输出:

id     date              quantity
1      2010-01-04 11:00  152
2      2010-01-04 11:00  210
3      2010-01-04 10:30  214
4      2010-01-04 10:45  122
Run Code Online (Sandbox Code Playgroud)

我只是无法弄清楚如何将它放入查询......

此外,以下选项会很好:

选项1:查询应仅返回最后XX分钟的值.

选项2:id应与另一个具有id和idname的表中的文本连接.id的输出应该是:id-idname(例如1-testid1).

非常感谢您的帮助!

sql oracle top-n greatest-n-per-group

15
推荐指数
2
解决办法
3万
查看次数

如何根据多行中的最大值选择单行

可能重复:
SQL:查找每组的最大记录数

我有一个有四列的表格如下:

name   major    minor  revision
p1     0        4      3
p1     1        0      0
p1     1        1      4
p2     1        1      1
p2     2        5      0
p3     3        4      4
Run Code Online (Sandbox Code Playgroud)

这基本上是包含每个程序版本记录的ca表.我想做一个选择以获取所有程序及其最新版本,因此结果将如下所示:

name   major    minor  revision
p1     1        1      4
p2     2        5      0
p3     3        4      4
Run Code Online (Sandbox Code Playgroud)

我不能只按名称分组并获得每列的最大值,因为那样我最终会得到每列中最高的数字,而不是具有最高版本的特定行.我怎么设置它?

mysql sql greatest-n-per-group

15
推荐指数
2
解决办法
3万
查看次数

在SQL中,如何为每个组选择前2行

我有一张表如下:

NAME    SCORE
-----------------
willy       1
willy       2
willy       3
zoe         4
zoe         5
zoe         6
Run Code Online (Sandbox Code Playgroud)

这是样本

聚合功能group by只允许我获得每个的最高分name.我想进行查询以获得每个最高的2分name,我该怎么办?

我的预期产量是

NAME    SCORE
-----------------
willy       2
willy       3
zoe         5
zoe         6
Run Code Online (Sandbox Code Playgroud)

mysql sql group-by greatest-n-per-group

15
推荐指数
4
解决办法
5万
查看次数

使用GROUP BY选择多个(非聚合函数)列

我试图从一列中选择最大值,同时按另一个具有多个重复值的非唯一id列进行分组.原始数据库看起来像:

mukey    | comppct_r | name | type
65789    | 20        | a    | 7n
65789    | 15        | b    | 8m
65789    | 1         | c    | 1o
65790    | 10        | a    | 7n
65790    | 26        | b    | 8m
65790    | 5         | c    | 1o
...
Run Code Online (Sandbox Code Playgroud)

这适用于:

SELECT c.mukey, Max(c.comppct_r) AS ComponentPercent
FROM c
GROUP BY c.mukey;
Run Code Online (Sandbox Code Playgroud)

返回一个表格如下:

mukey    | ComponentPercent
65789    | 20
65790    | 26
65791    | 50
65792    | 90
Run Code Online (Sandbox Code Playgroud)

我希望能够在不影响GROUP BY功能的情况下添加其他列,在输出表中包含名称和类型等列,如: …

sql ms-access greatest-n-per-group

15
推荐指数
1
解决办法
5万
查看次数

检索查询中的最新记录

我有以下表格:

tblPerson:

PersonID | Name
---------------------
   1     | John Smith
   2     | Jane Doe
   3     | David Hoshi
Run Code Online (Sandbox Code Playgroud)

tblLocation:

LocationID | Timestamp | PersonID | X | Y | Z | More Columns...
---------------------------------------------------------------
    40     | Jan. 1st  |     3    | 0 | 0 | 0 | More Info...
    41     | Jan. 2nd  |     1    | 1 | 1 | 0 | More Info...
    42     | Jan. 2nd  |     3    | 2 | 2 | 2 | More Info...
    43 …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server group-by sql-server-2005 greatest-n-per-group

14
推荐指数
1
解决办法
2万
查看次数

mysql选择前n个最大值

如何从表中选择前n个最大值?

对于这样的表:

column1  column2
   1       foo
   2       foo
   3       foo
   4       foo
   5       bar
   6       bar
   7       bar
   8       bar
Run Code Online (Sandbox Code Playgroud)

对于n = 2,结果必须是:

3    
4    
7    
8    
Run Code Online (Sandbox Code Playgroud)

以下方法仅选择每个组的最大值.

SELECT max(column1) FROM table GROUP BY column2
Run Code Online (Sandbox Code Playgroud)

返回:

4
8
Run Code Online (Sandbox Code Playgroud)

mysql greatest-n-per-group

14
推荐指数
1
解决办法
1万
查看次数

PostgreSQL:根据排序顺序仅选择每个id的第一条记录

对于以下查询,我只需要选择shape_type值最小的第一条记录(范围从1到10).如果你有任何关于如何轻松做到这一点的知识是postgresql,请帮忙.谢谢你的时间.

select g.geo_id, gs.shape_type
from schema.geo g   
join schema.geo_shape gs on (g.geo_id=gs.geo_id)  
order by gs.shape_type asc;
Run Code Online (Sandbox Code Playgroud)

sql postgresql distinct greatest-n-per-group distinct-on

14
推荐指数
1
解决办法
1万
查看次数

SQL:如何限制第一个找到的行的连接?

如何在两个表之间建立连接但限制为满足连接条件的第一行?

在这个简单的例子中,我想为table_A中的每一行获取满足条件的table_B中的第一行:

select table_A.id, table_A.name, table_B.city 
from table_A join table_B 
on table_A.id = table_B.id2
where ..

table_A (id, name)
1, John
2, Marc

table_B (id2, city)
1, New York
1, Toronto
2, Boston

The output would be:
1, John, New York
2, Marc, Boston
Run Code Online (Sandbox Code Playgroud)

可能是Oracle提供了这样一个功能(性能是一个值得关注的问题).

sql oracle join greatest-n-per-group

14
推荐指数
3
解决办法
2万
查看次数

试图找到列中的第二大值(postgres sql)

我试图找到列中的第二大值,只有第二大值.

select a.name, max(a.word) as word
from apple a
where a.word < (select max(a.word) from apple a)
group by a.name;
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我现在所返回的第二大值和所有较低的值也是幸运的,但幸运的是避免了最大值.

有没有办法来解决这个问题?

sql postgresql greatest-n-per-group

13
推荐指数
3
解决办法
1万
查看次数

MySQL Left Join + Min

看似简单的MySQL问题,但我以前从来没有这样做过..

我有两张桌子,物品和价格,有一对多的关系.

Items Table
id, name

Prices Table
id, item_id, price
Run Code Online (Sandbox Code Playgroud)

哪里

prices.item_id = items.id
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的:

SELECT items.id, items.name, MIN(prices.price)
FROM items
LEFT JOIN prices ON items.id = prices.item_id
GROUP BY items.id
Run Code Online (Sandbox Code Playgroud)

如何以最低价格返回相应的price.id?谢谢!

mysql group-by min left-join greatest-n-per-group

13
推荐指数
2
解决办法
2万
查看次数