SQL部门-行-Netezza
我在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查询来计算
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
等等?你要把数据整理好吗?我的意思是,是否保证第二组数据在第一组数据之后?是的..保证数据顺序相同…谢谢