SQL Max 跨多个版本

标签 sql max greatest-n-per-group teradata

我有一个三列的表格

Product        Version        Price
1              1              25
1              2              15
1              3              25
2              1              8
2              2              8
2              3              4
3              1              25
3              2              10
3              3              5

我想按产品获取最高价格和最高版本。 因此,在上面的示例中,结果将包含产品 1、版本 3、价格 25。产品 2,版本 2,价格 8。

你能告诉我我该怎么做吗?

我在 Teradata

最佳答案

如果 Teradata 支持 ROW_NUMBER 分析函数:

SELECT
  Product,
  Version,
  Price
FROM (
  SELECT
    atable.*,  /* or specify column names explicitly as necessary */
    ROW_NUMBER() OVER (PARTITION BY Product
                       ORDER BY Price DESC, Version DESC) AS rn
  FROM atable
) s
WHERE rn = 1
;

关于SQL Max 跨多个版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18982464/

相关文章:

sql - 计算Ms Access中行之间的绝对差

java - Android、SQL、空指针异常

php - SELECT inside INSERT 来自多个表的多行

Matlab代码识别多项式曲线的最大峰值(坐标)

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

php - Laravel Eloquent 选择具有 maxcreated_at 的所有行

mysql - 导入省略列的sql文件数据(MySql)

if-statement - 根据 Google 表格中其他列的最大值返回单元格内容

Javascript 在对象数组中找到最接近的数字并检索对象的键值

mysql - 删除列表 SQL 中的重复列表