我在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:查找每组的最大记录数
我有一个有四列的表格如下:
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)
我不能只按名称分组并获得每列的最大值,因为那样我最终会得到每列中最高的数字,而不是具有最高版本的特定行.我怎么设置它?
我有一张表如下:
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) 我试图从一列中选择最大值,同时按另一个具有多个重复值的非唯一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功能的情况下添加其他列,在输出表中包含名称和类型等列,如: …
我有以下表格:
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
如何从表中选择前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) 对于以下查询,我只需要选择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) 如何在两个表之间建立连接但限制为满足连接条件的第一行?
在这个简单的例子中,我想为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提供了这样一个功能(性能是一个值得关注的问题).
我试图找到列中的第二大值,只有第二大值.
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)
出于某种原因,我现在所返回的第二大值和所有较低的值也是幸运的,但幸运的是避免了最大值.
有没有办法来解决这个问题?
看似简单的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?谢谢!
sql ×7
mysql ×4
group-by ×3
oracle ×2
postgresql ×2
distinct ×1
distinct-on ×1
join ×1
left-join ×1
min ×1
ms-access ×1
sql-server ×1
t-sql ×1
top-n ×1