Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于两行之间的差异进行SQL选择_Sql - Fatal编程技术网

基于两行之间的差异进行SQL选择

基于两行之间的差异进行SQL选择,sql,Sql,我正在努力研究如何根据两行之间的差异轻松地选择记录 我有一张这样的桌子 Time | Store | Code | % | Ranked | ------------------------------------------ 13:50 | Swindon | 33 | 32.578 | 1 | 13:50 | Reading | 31 | 29.438 | 2 | 13:50 | Bath | 32 | 28.221 | 3

我正在努力研究如何根据两行之间的差异轻松地选择记录

我有一张这样的桌子

Time  | Store   | Code | %      | Ranked |  
------------------------------------------
13:50 | Swindon | 33   | 32.578 | 1      |  
13:50 | Reading | 31   | 29.438 | 2      |  
13:50 | Bath    | 32   | 28.221 | 3      |  
14:50 | Swindon | 33   | 32.100 | 1      |  
14:50 | Reading | 32   | 30.987 | 2      |  
14:50 | Bath    | 32   | 28.335 | 3      |  
我需要根据不同时间商店之间的百分比差异做不同的报告

举个例子

从排名第2的门店中选择排名第1的所有门店,其中
=
至第3

因此,在本例中,它将只选择13:50 Swindon,因为%的差异刚刚超过3%

有其他的变化,但我相信一旦我有了一个答案,我可以自己解决其余的问题


我知道正常的select语句,但我认为我必须进行连接,但不确定如何进行连接。

基于上述信息,我假设如下:

select *
from table t1
inner join table t2 on t1.Time = t2.Time and t1.Ranked = 1 and t2.Ranked = 2
where (t1.% - t2.%) > 3

列名有点离谱,但我想排名是基于时间的。

你的问题我不太清楚。是否要检查百分比之间的间隔并就此作出决定?请改进您的问题。这很令人困惑。您的查询条件指定了
排名
,但它提示了
%
联接
用于查看两个或多个表中的数据,您可能只需要
WHERE
条件和我对您的问题的理解中的适当排序顺序。正如帕特里克所说,不太清楚。嗨,对不起。所有的商店都是在一天中的特定时间间隔根据顾客的百分比进行排名的。但我不确定这是否真的重要,因为我想选择排名第一的所有商店,它们的排名比其他商店高出一定的百分比。所以我猜,因为每次只有1家排名第一的商店,这并不重要。我将不需要查询时间只是排名。谢谢你这项工作很好,但在你的情况下,下面的一个我不得不交换连接的顺序,以获得排名第一的查询。但我真的很感谢你的帮助。很抱歉,我刚刚意识到,查询会同时提取两条记录,而不仅仅是排名第一的记录,下面的查询也是如此。我不明白,它是否有效?这两个查询的行为都和你的一样,上面的查询运行良好,除了上面的我不得不交换From语句的顺序。很抱歉,你可以在结果上给我任何进一步的帮助,因为它会拉出排名第一和第二的结果。我似乎不能只获得排名第一的结果。我尝试使用更多的AND子句,但仍然不起作用。很抱歉,我没有看到“存储”修改,但MS SQL server似乎无法识别该命令。
SELECT R1.store, 
       R1.timestamp 
FROM   store_tbl R1, 
       store_tbl R23 
WHERE  R1.ranked = 1 
       AND R23.ranked = 2 
       AND R1.timestamp = R23.timestamp 
       AND ( R1.percentage - R23.percentage ) > 3