我希望根据包含订单请求的数据库中的订单数量来订购密钥列表。基本上,在表格上,称之为订单(o_partkey,o_returnflag)我试图获得每个订单的总回报数。我已尝试使用目标架构返回列表(partkey,numreturns)的以下代码段的许多变体:
select O.o_partkey as partkey,
count(case when O.o_returnflag = 'R' then 1 else 0 end) as numreturns
from orders O
orderby quantity_returned desc;
我是SQLite的新手,我只是跳进了基础知识。这是对作业问题的调整(实际问题更复杂),但我已经简化了我的问题。
答案 0 :(得分:0)
考虑使用带有SUM()
的派生表子查询作为聚合函数:
SELECT dT.partkey, dT.numreturns
FROM
(SELECT O.o_partkey as partkey,
SUM(CASE WHEN O.o_returnflag = 'R' THEN 1 ELSE 0 END) as numreturns
FROM [ORDER] O
GROUP BY O.o_partkey) AS dT
ORDER BY dT.numreturns DESC;
请确保将表格括在[ORDER]
的{{3}}。
答案 1 :(得分:0)
您的问题是COUNT计算行,因此它会计算0
和1
值。
您对任何其他行都不感兴趣,因此您只需使用WHERE过滤掉回报:
SELECT o_partkey AS partkey,
COUNT(*) AS numreturns
FROM orders
WHERE o_returnflag = 'R'
ORDER BY 2 DESC;