当前位置: 首页 > 面试题库 >

用于选择首选Candy的高效SQL 2000查询

柯凯旋
2023-03-14
问题内容

(我希望我能提出一个更具描述性的标题…如果您可以命名我要询问的查询类型,则建议一个或编辑这篇文章)

数据库: SQL Server 2000

样本数据(假设有500,000行):

Name   Candy       PreferenceFactor
Jim    Chocolate   1.0
Brad   Lemon Drop   .9
Brad   Chocolate    .1
Chris  Chocolate    .5
Chris  Candy Cane   .5
499,995 more rows...

请注意,具有给定“名称”的行数是无限制的。

所需的查询结果:

Jim    Chocolate   1.0
Brad   Lemon Drop   .9
Chris  Chocolate    .5
~250,000 more rows...

(由于Chris对Candy Cane和Chocolate的偏爱相同,因此获得一致的结果就足够了)。

问题:
如何从数据中选择名称,糖果,其中每个结果行包含一个唯一的名称,以使所选的糖果对每个名称具有最高的PreferenceFactor。(首选快速有效的答案)。

表格上需要哪些索引?如果Name和Candy是另一个表的整数索引(除了需要一些连接),这会有所不同吗?


问题答案:

select c.Name, max(c.Candy) as Candy, max(c.PreferenceFactor) as PreferenceFactor
from Candy c
inner html" target="_blank">join (
select Name, max(PreferenceFactor) as MaxPreferenceFactor
from Candy
group by Name
) cm on c.Name = cm.Name and c.PreferenceFactor = cm.MaxPreferenceFactor
group by c.Name
order by PreferenceFactor desc, Name



 类似资料:
  • 问题内容: 我有一个名为faq_questions的表,其结构如下: 我试图建立一个给定排序顺序的查询,选择具有最高排序顺序的行。 例子: 好的,假设我为已知的排序顺序(id 4)输入了5,我需要它返回ID为3的行。由于不能保证sort_order是连续的,所以我不能只选择known_sort_order + 1。 谢谢! 问题答案: 似乎太简单了,但是看起来像您所需要的:

  • 我有两个表和 names表有以下列表: -男性姓名从nameID 1到nameID 10 -女性姓名从nameID 11到nameID 21 -两者都从nameID 23到nameID 31 性别表有三个属性: -女性 -男性 -两者 我正在使用引导选择选项,我想显示从nameID11到nameid21的名称,如果用户从gender选择选项中选择女性,等等,这是可能的吗?我看到其他帖子,我注意到他

  • 问题内容: 我的SQL代码如下: 等效的linq表达式是什么? 问题答案: 我第一次尝试在 来源 LINQ to SQL中的NOT IN子句

  • 问题内容: 假设有工资表: 我目前正在使用此代码(AutoIT脚本: 因此,如果Hour_number在低小时或高小时之间,那两个查询是完美的。我需要某种查询,它基本上会执行以下操作: 然后将其重复为“默认”,因为找不到该员工。 补充:如果仅通过1个查询未找到$ Employee,是否可以尝试使用“ Default”? 问题答案: 如果仅通过1个查询未找到$ Employee,是否可以尝试使用“

  • 问题内容: 我有两个表,它们的定义是: 我想知道未在中引用的行数,可以通过以下方式完成: 有没有更有效的方法来执行此查询? 问题答案: 升级到MySQL 5.6,可以更好地针对子查询优化半联接。 见http://dev.mysql.com/doc/refman/5.6/en/subquery- optimization.html 否则使用排除联接: 另外,请确保上面有一个索引。

  • 问题内容: 我目前正在使用WTFORMS创建一个动态选择字段,但是它从未提交,并且通过以下错误使验证失败。 我的字段是这样创建的: 在视图中,我从数据库中获取选项,如下所示: 但是,如果我创建静态选项,它将起作用。 问题答案: 我的猜测是,是-当数据从它被视为一个客户端回来的字符串由WTForms除非调用传递给了的关键字参数wtforms.fields.SelectField的构造函数: 或者,如