我有一个表T
的列x
,y
,a
,b
使得
SELECT x,y,a,b FROM T
ORDER BY x,y,a,b
给我下表
x | y | a | b
x1 | y1 | a1 | b1
x1 | y1 | a1 | b2
x1 | y1 | a2 | b1
x1 | y2 | a1 | b1
x1 | y2 | a1 | b2
x1 | y2 | a2 | b1
我将如何获得每个x,y组的第一行?也就是说,我将如何获得下表
x | y | a | b
x1 | y1 | a1 | b1
x1 | y2 | a1 | b1
这是第二个示例:对于这样的表T
x | y | a | b
x1 | y1 | a1 | b3
x1 | y1 | a1 | b4
x1 | y1 | a2 | b1
x1 | y1 | a2 | b2
x1 | y2 | a1 | b3
x1 | y2 | a1 | b4
x1 | y2 | a2 | b1
x1 | y2 | a2 | b2
我期望得到
x | y | a | b
x1 | y1 | a1 | b3
x1 | y2 | a1 | b3
考虑到SQL 2005或更高版本:
SELECT T1.X,
T1.Y,
T1.A,
T1.B
FROM
(SELECT X,
Y,
A,
B,
ROW_NUMBER() OVER (Partition BY X,Y Order By A,B) AS RowNum
FROM T
) T1
WHERE T1.RowNum = 1
问题内容: 如标题所示,我想选择以分组的每组行的第一行GROUP BY。 具体来说,如果我有一个purchases看起来像这样的表: 我的输出: 我想查询每个人id最大的购买金额(total)customer。像这样的东西: Expected Output: 问题答案: 在PostgreSQL中,这通常更简单,更快捷(下面将进行更多性能优化): 或更短(如果不太清楚),输出列的序号为: 如果tot
问题内容: 我有一个生成的DataFrame,如下所示: 结果如下: 如您所见,DataFrame按升序排列,然后按降序排列。 我想选择每个组的第一行,即 从小时== 0的组中选择(0,cat26,30.9) 从小时= 1的组中选择(1,cat67,28.5) 从小时== 2的组中选择(2,cat56,39.6) 等等 因此,所需的输出将是: 能够选择每个组的前N行也可能很方便。 任何帮助都将受到
问题内容: 在C#中将是这样的: Linq-To-Sql将其转换为以下T-SQL代码: 但是它与MySQL不兼容。 问题答案: 当我写 有用。在其他RDBMS中,IIRC这样的语句是不可能的,因为不属于任何组合键的不属于分组键的列就被引用了。 这种“怪癖”的行为与我想要的行为非常接近。所以我用它来获得想要的结果:
问题内容: 我有这个SQL查询: 这将导致类似于以下的输出: 我想每个Foo仅保留第一行,而忽略其余的行。 我怎么做? 问题答案:
我刚开始学习SQL。我正在使用Oracle数据库。 表emp中包含empno、ename、job、mgr、hiredate、sal、comm、deptno列。 我想从ename列中获取每个deptno的第一条记录,ename必须按asc排序。 以下SQL工作: 我想优化它,所以我不需要重写它,如果我添加一些记录到deptno列。 我用distinct-like进行了尝试
问题内容: 表格如下: 我想获取班级列表,以及每个班级-属于每个班级的学生人数。我怎样才能做到这一点? 问题答案: 您需要这样做-