某些行的MIN和MAX

时间:2018-10-24 07:06:54

标签: sql

我有一个看起来像这样的数据集( myDataset.csv

.png

...等等,对于许多其他用户/值

我想找到每个用户的Min和Max值,但是我很难通过SQL查询来做到这一点。

我解决了这个问题,仅查询了一个用户(例如Alice)的所有行,以获取AliceDataset.csv,然后运行此查询以查找其最小值和最大值。所以我知道如何获得最小和最大。

User      Value
Alice     2
Alice     4
Alice     3
Bob       9
Bob       7
Bob       8

但是如何在myDataset.csv 中循环遍历 all 个用户,并为每个用户找到其最小值和最大值(甚至可能使用显示的该查询中的代码)以上)

3 个答案:

答案 0 :(得分:2)

使用max()min()函数,您必须使用group by来获取每个用户的最大值和最小值

select User , max(Value) mx_val,min(Value) min_val
from your_table
group by  User 

答案 1 :(得分:1)

使用分组依据和汇总-这将为您提供明智的最小值和最大值

SELECT user, MIN(Value) as minval, MAX( Value) as maxval
FROM AliceDataset
group by user

答案 2 :(得分:1)

聚集函数通常用于返回单个值。如果要select的任何具有聚合功能的列,则需要添加带有要在select结果中添加的列名的group by子句。

因此,在您的情况下,您想在结果中使用value上的聚合函数,并且还想用User显示值函数结果,因此您需要使用{{1 }}。

因此查询将是:

User

注意:
如果要在使用聚合函数时添加条件,则需要使用select User, max(Value) as "Maximum Value", min(Value) as "Minimum Value" from AliceDataset group by User 而不是having
例如:

where