Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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
DUKESQLMOOC10203中没有更多的假脱机空间_Sql_Teradata - Fatal编程技术网

DUKESQLMOOC10203中没有更多的假脱机空间

DUKESQLMOOC10203中没有更多的假脱机空间,sql,teradata,Sql,Teradata,我得到这个错误: DUKESQLMOOC10203中没有更多的假脱机空间 正如其他人所指出的,您的查询没有写出来的意义。您正在生成一个中间结果集/子查询,其中包含deptinfo.dept、deptinfo.deptdesc、skuinfo.brand、skuinfo.style和skuinfo.color的每个不同组合的总和(trnsact.amt) 到目前为止一切都很好。如果您想获得具有最大的总和(trnsact.amt)的部门,您可以使用按总数排序的方法对该子查询的结果进行排序,并在该查询

我得到这个错误:

DUKESQLMOOC10203中没有更多的假脱机空间


正如其他人所指出的,您的查询没有写出来的意义。您正在生成一个中间结果集/子查询,其中包含
deptinfo.dept、deptinfo.deptdesc、skuinfo.brand、skuinfo.style和skuinfo.color的每个不同组合的总和(trnsact.amt)

到目前为止一切都很好。如果您想获得具有最大的
总和(trnsact.amt)
的部门,您可以使用
按总数排序的方法对该子查询的结果进行排序
,并在该查询开始时使用
选择前1名的方法仅选择一条记录:

select deptinfo.dept, deptinfo.deptdesc, skuinfo.brand, skuinfo.style, skuinfo.color, max(total) from
(select deptinfo.dept, deptinfo.deptdesc, skuinfo.brand, skuinfo.style, skuinfo.color, sum(trnsact.amt) as total
from deptinfo
inner join skuinfo
on deptinfo.dept = skuinfo.dept
inner join trnsact
on skuinfo.sku = trnsact.sku
where stype = 'R'
group by 1,2,3,4,5) as a
group by 1,2,3,4,5
order by 6 desc;
可以使用
QUALIFY
语句代替按总描述排序。如果您有多条“TOP”记录具有相同的
总和(trnsact.amt)
,则此选项非常有用。第一次查询每次都可能返回不同的结果,因为无法说明“如果有多个部门/品牌/风格/颜色组合具有相同的总和(trnsact.amt),则选择具有最高
deptinfo.dept
number的记录”。使用Qualife来执行此操作的方式如下所示:

SELECT TOP 1
    deptinfo.dept,
    deptinfo.deptdesc,
    skuinfo.brand,
    skuinfo.style,
    skuinfo.color,
    sum(trnsact.amt) AS total
FROM deptinfo
    INNER JOIN skuinfo ON deptinfo.dept = skuinfo.dept
    INNER JOIN trnsact ON skuinfo.sku = trnsact.sku
WHERE stype = 'R'
GROUP BY 1,2,3,4,5
ORDER BY total DESC;
查询中spool空间不足的最可能原因是,第一次选择引用了表名,但这些表名仅在子查询的上下文中。通过在第一个SELECT中再次命名表,您导致了交叉连接,实际上是将
deptinfo
中的每条记录与
skuinfo
中的每条记录与
trnsact
中的每条记录与子查询中的每条记录连接在一起,即使您的表很小。这也不是你想要的

使用子查询时,外部SELECT、WHERE、ORDER BY、GROUP BY和QUIRITY引用您为子查询提供的别名,如下所示(使用上面两个查询中的一个来获得结果,这只是如何使用子查询的示例):


正如我上面提到的,这仍然无法得到您想要的结果,但至少您现在可以运行它,看看为什么结果与您的期望不符。

对我来说,执行您的子查询没有意义。你想在这里干什么?还有,你的桌子有多大?你能给我解释一下吗?外部组BY无效,它返回的结果与内部组完全相同。你到底想做什么?在子查询中完成trnsact的joinsum之前,计算
trnsact
上的总和可能更有效,然后我要最大化该总和哪个部门(带部门描述)、品牌、风格和颜色的退货项目的总价值最大?这是一个基本的问题,它要么是一个
selecttop1withties。。。按总描述排序
限定排名()超过(按总描述排序)=1
。当有多行具有相同的max total时,这两行都将返回所有这些。另外一行用于发现由于表名不正确而导致的产品联接:-)顺便说一句,
TOP with TIES
类似于
RANK
SELECT 
    deptinfo.dept,
    deptinfo.deptdesc,
    skuinfo.brand,
    skuinfo.style,
    skuinfo.color,
    sum(trnsact.amt) AS total
FROM deptinfo
    INNER JOIN skuinfo ON deptinfo.dept = skuinfo.dept
    INNER JOIN trnsact ON skuinfo.sku = trnsact.sku
WHERE stype = 'R'
GROUP BY 1,2,3,4,5
QUALIFY ROW_NUMBER() OVER (ORDER BY total DESC, dept DESC) = 1;
select a.dept, a.deptdesc, a.brand, a.style, a.color, max(total) from
(select deptinfo.dept, deptinfo.deptdesc, skuinfo.brand, skuinfo.style, skuinfo.color, sum(trnsact.amt) as total
from deptinfo
inner join skuinfo
on deptinfo.dept = skuinfo.dept
inner join trnsact
on skuinfo.sku = trnsact.sku
where stype = 'R'
group by 1,2,3,4,5) as a
group by 1,2,3,4,5
order by 6 desc;