SQL部门-行-Netezza

SQL部门-行-Netezza,sql,tsql,netezza,Sql,Tsql,Netezza,我在netezza数据库表列中有如下数据: Slno Ads 1 282542 2 2492266 3 2259286 4 2072619 5 1915098 6 11567811 7 10097 8 5900 9 2572 10 18569 现在我需要编写一个sql查询来计算

我在netezza数据库表列中有如下数据:

    Slno    Ads    
    1       282542
    2       2492266
    3       2259286
    4       2072619
    5       1915098
    6       11567811
    7       10097
    8       5900
    9       2572
    10      18569
现在我需要编写一个sql查询来计算

    Slno 6 / Slno 1 i.e 11567811/282542
    Slno 7 / Slno 2 i.e 10097/2492266
    Slno 8 / Slno 3 i.e 5900/2259286
    Slno 9 / Slno 4 i.e 2572/2072619
    Slno 10/ Slno 5 i.e 18569/1915098
我总是只有10行数据,数据集需要类似的划分

计算值可以显示在Ads列旁边的新列中

请让我知道,如果问题是明确的,你需要任何信息


谢谢

您可以通过自动加入来实现这一点:

select tnum.Ads / tdenom.Ads
from t tnum join
     t tdenom
     on tnum.slno = tdenom.slno + 5;

+5
不仅匹配分子和分母行。它还过滤掉其中五行。例如,“4”永远不能是分子,因为没有一行
slno
是-1。

不确定这是您想要做的还是您没有告诉我们一些事情

SELECT n.Slno
     , n.Ads
     , d.Slno
     , d.Ads
     , n.Ads/d.Ads
  FROM AdsTable n
 INNER JOIN AdsTable d
    ON d.Slno = n.Slno - 5
 WHERE n.Slno > 5

如果您没有序列号,只有Ads列,则可以执行以下操作:

DECLARE @t AS TABLE (slno INT IDENTITY (1,1), Ads DECIMAL)

INSERT INTO @t(Ads)
SELECT Ads FROM AdsTable

SELECT A.Ads, A.Ads/B.Ads ComputedValue 
FROM @t A INNER JOIN @t B ON A.slno = B.slno + 5
结果将是:

   Ads         ComputedValue
-----------------------------------
11567811    40.9419166000099100310
   10097    0.0040513332044011353
    5900    0.0026114445006077141
    2572    0.0012409420158746011
   18569    0.0096961095463521971

这10行是否总是有Slno值1到10?如果没有Slno列..我可以为SQL使用索引或类似的东西吗?如果没有序列号,我们只有Ads列…我们将框显查询。。。Thanks@Moonwalk-一种方法是使用临时表。请参阅下面的答案。我在数据库中遇到的问题是,SlNo不是主键,数据如下:SlNo Ads 1 282542 2492266 3 22592286 4 2072619 5 1915098 1 11567811 2 10097 3 5900 4 2572 5 18569。请查找更新的Slnocolumn@Moonwalk-我认为在Netezza中可以使用临时表。我提供的答案在tsql中。您已经用tsql标记了您的问题。你的意思是说SlNo在第二条注释中重复吗?是的,前五行将始终具有序列号1,2,3,4,5,然后下五行将具有序列号1,2,3,4,5…我的意思是说我们可能没有1-10的SlNo,好的,但是你正在寻找的结果是
第二个1/第一个1,第二个2/第一个2
等等?你要把数据整理好吗?我的意思是,是否保证第二组数据在第一组数据之后?是的..保证数据顺序相同…谢谢