我有一张桌子,如下所示:
NAME SCORE
-----------------
willy 1
willy 2
willy 3
zoe 4
zoe 5
zoe 6
这是样本
的汇总功能group by
仅允许我获得每个方面的最高分name
。我想查询以获得每个人的最高2分name
,我该怎么办?
我的预期输出是
NAME SCORE
-----------------
willy 2
willy 3
zoe 5
zoe 6
SELECT *
FROM test s
WHERE
(
SELECT COUNT(*)
FROM test f
WHERE f.name = s.name AND
f.score >= s.score
) <= 2
问题内容: 在C#中将是这样的: Linq-To-Sql将其转换为以下T-SQL代码: 但是它与MySQL不兼容。 问题答案: 当我写 有用。在其他RDBMS中,IIRC这样的语句是不可能的,因为不属于任何组合键的不属于分组键的列就被引用了。 这种“怪癖”的行为与我想要的行为非常接近。所以我用它来获得想要的结果:
问题内容: 我有这个SQL查询: 这将导致类似于以下的输出: 我想每个Foo仅保留第一行,而忽略其余的行。 我怎么做? 问题答案:
问题内容: 我想针对每个标签针对不同的产品类别挑选出最畅销的3种产品。数据如下所示: 我知道如何使用ROW_NUMBER()提取每个标签中销售量最高的3种产品,但是它将返回product1,product2,product3。我不想要product3,因为它与product2属于同一类别。我要代替product4。如何在SQL Server中执行此操作? 问题答案: 第一个ROW_NUMBER删除
问题内容: 我有这张表 language_id是指记录所用的语言。我想做的是检索 每个language_id中 最近的五个记录(ORDER BY time_posted DESC LIMIT 5)的列表。我可以使用许多不同的SQL查询在PHP中循环执行此操作,但我觉得有一种更简单的方法。 我必须得到一本有关SQL的书,哈哈。 谢谢。 问题答案: 这是我在MySQL中解决此“每组前N个”类型的查询的
问题内容: 我想将一列截断为最多100个字符。您如何在SQL Server中做到这一点? 问题答案: 试试这个: 编辑: 您也可以尝试如下操作: 例如,如果您想修剪记录中的最后5个字符。
问题内容: 我有一个生成的DataFrame,如下所示: 结果如下: 如您所见,DataFrame按升序排列,然后按降序排列。 我想选择每个组的第一行,即 从小时== 0的组中选择(0,cat26,30.9) 从小时= 1的组中选择(1,cat67,28.5) 从小时== 2的组中选择(2,cat56,39.6) 等等 因此,所需的输出将是: 能够选择每个组的前N行也可能很方便。 任何帮助都将受到