我有两列列出的数据如下:
X | Y
--+---
A | 4
A | 2
A | 0
B | 3
B | 2
B | 1
我想构建我的SQL查询,以便输出:
X | Y
--+---
A | 4
B | 3
任何提示?
SELECT
table1.X,
max(table2.Y)
FROM
table1
INNER JOIN
table2
ON table1.X = table2.X
ORDER BY
table1.X,
table2.Y DESC;
答案 0 :(得分:3)
SQL表代表无序集,因此没有"第一个"组中的行,除非列指定了排序。
从您的示例数据中,只需一个简单的max()
即可获得所需的结果:
select x, max(y)
from table t
group by x;
答案 1 :(得分:0)
你也可以像这样使用ROW_NUMBER
:
SELECT
x, y
FROM (
SELECT
t1.x, t2.y,
ROW_NUMBER() OVER (PARTITION BY t1.x ORDER BY t1.x, t2.y DESC) as seq
FROM
table1 t1
JOIN
table2 t2 ON t1.x = t2.x) t
WHERE
(seq = 1)
seq
按t1.x
和t2.y DESC
排序,并通过更改t1.x
进行重置。