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

如何用SQL比较两行的值?

鲁博雅
2023-03-14
问题内容

我正在使用sqlite数据库。我的表架构是

CREATE TABLE performance(area TEXT, name TEXT, score INTEGER, dt TEXT)

表中的内容是这样的:

uk|josh|4|2013-11-04 20:00
ca|josh|2|2013-11-05 20:00
us|josh|6|2013-11-05 20:00
uk|andy|5|2013-11-04 20:00
us|andy|1|2013-11-05 20:00
uk|sara|9|2013-11-05 20:00
ca|sara|7|2013-11-06 20:00   
ca|sara|2|2013-11-06 20:00

我使用以下sql语句选择名称及其按名称和dt分组的相应分数总和。

select name, sum(score), dt from performance group by name, dt;

我有

josh|4|2013-11-04 20:00
josh|8|2013-11-05 20:00
andy|5|2013-11-04 20:00
andy|1|2013-11-05 20:00
sara|9|2013-11-05 20:00
sara|9|2013-11-06 20:00

现在,我想扩展查询,以便sql语句可以搜索其分数总和在不同时间(dt)不变的内容。在这种情况下,输出应为:

sara|9|2013-11-05 20:00
sara|9|2013-11-06 20:00

如何编写这样的sql?


问题答案:

这可以通过自我(反)联接来实现:

SELECT a.*
FROM   (SELECT name, dt, SUM(score) as sum_score 
        FROM   performance 
        GROUP BY name, dt) a
JOIN   (SELECT name, dt, SUM(score) as sum_score
        FROM   performance 
        GROUP BY name, dt) b
ON     a.name = b.name AND a.sum_score = b.sum_score AND a.dt < b.dt


 类似资料:
  • 问题内容: 可以说我有两个带有SSN变量的表,并且我想显示仅在一个表中的表,而不是两个表中的表。 正确的方法是什么? 问题答案: 这是一种方法: 这适用于大多数数据库,但不适用于MySQL。以下内容几乎可以在任何数据库中工作:

  • 我有包含行的表 我想拥有大于且相反的行的百分比。 如果有人知道什么是错误,谢谢! [错误代码:-206,SQL状态:42703]DB2 SQL错误:sqlcode=-206,sqlstate=42703,sqlerrmc=helptable.total,driver=3.57.82)

  • 问题内容: 我有两个表,并且如果第二个表中存在行的确切副本,则需要从第一个表中删除行。 有没有人举过我如何在MSSQL Server中执行此操作的示例? 问题答案: 好吧,在某个时候,您将必须检查所有列-可能还需要加入… 应该可以做到……还有,但是这只会有所 帮助 -您仍然需要检查实际值以防止哈希冲突。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  • 问题内容: 在SQL中这可能吗?这似乎是一个简单的概念。(我正在使用SQL Server 2005) 循环遍历我的SQL表中的所有行,如果一行= 65,下一行等于120,则比较m列中的值j,并在另一列中打印该值(第q列) SQL专家有什么想法吗?我可以在SQL中执行此操作吗?我的想法是:也许循环有点长(我可以在sql作业中运行它),但是可以比较行并将j循环值插入另一列中。那就是我被困住的地方。 问

  • 问题内容: 我想知道如何比较两个不同的数据库 表记录 。我的意思是,我将比较两个数据库表,它们可能具有不同的列名但具有相同的数据。但是其中一个表可能比另一个表具有更多的记录,因此我想看看这两个表之间的区别是什么。为此,如何编写sql查询?仅供参考:这两个数据库都在同一个SQL Server实例下。 然后,在比较表1和表2之后,它应该 从 表2返回 Ruby Core。 问题答案: 如果执行从T1到

  • 问题内容: 我有两个。每个大小为100000。我想比较它们并计算匹配的元素。 这是我的代码: 在这里比较过程要花费很多时间。 如何解决和优化此问题。 问题答案: 您应该使用:返回一个包含collection1中所有元素的集合,这些元素也处于collection2中。