问题描述
我有一张看起来像这样的表格:
id |姓名 |数量 1 杰西 192$ 2 山姆 123 美元 3 史蒂夫 345 美元 4 乔希 234 美元 5 火腿 452$ 6 约翰 211$ 7 屈臣氏 111$ 8 埃米尔 143$ 9 里亚兹 311$ 10 帕纳格 139 美元 现在,我想要金额最高的前 3 个人的 id。我搜索了一些像窗口函数、聚合组件这样的东西,但我真的找不到我需要的东西。有人能帮我解决这个问题吗?
我希望结果看起来像
身份证金额 5 452$ 3 345 美元 9 311$
解决方法
您能否使用 Matillion 数据库查询组件简单地运行 SQL 命令 - 类似于以下示例中的 SELECT?
CREATE OR REPLACE TEMPORARY TABLE stacko_q
AS
SELECT 1 as id,'jesse' as nm,192 as amount UNION ALL
SELECT 2 as id,'sam' as nm,123 as amount UNION ALL
SELECT 3 as id,'steve' as nm,345 as amount UNION ALL
SELECT 4 as id,'josh' as nm,234 as amount UNION ALL
SELECT 5 as id,'hamish' as nm,452 as amount UNION ALL
SELECT 6 as id,'john' as nm,211 as amount UNION ALL
SELECT 7 as id,'watson' as nm,111 as amount UNION ALL
SELECT 8 as id,'amir' as nm,143 as amount UNION ALL
SELECT 9 as id,'riaz' as nm,311 as amount UNION ALL
SELECT 10 as id,'panag' as nm,139 as amount;
SELECT id,amount
FROM (
SELECT id,amount,rank() OVER (order by amount desc) my_rank
FROM stacko_q)
WHERE my_rank <= 3;
-- results - 3 rows
-- ID AMOUNT
-- 5 452
-- 3 345
-- 9 311
我希望这有助于...丰富
附言如果此(或其他)答案对您有帮助,请花一点时间“接受”有帮助的答案,方法是点击答案旁边的复选标记,将其从“变灰”切换为“已填写”。
,需要用到rank组件,按数量排序,窗函数=行号。 然后将其输入过滤器组件,并选择行号