使用 matillion etl 中的 window 计算获取金额最高的前 3 个 ID

Get top 3 IDs with highest amount using window calculation in matillion etl

我有一个 table 看起来像这样:

编号 |姓名 |数量 1 杰西 192$ 2 山姆 123$ 3 史蒂夫 345 美元 4 乔什 234 美元 5 个火腿 452$ 6 约翰 211$ 7 屈臣氏 111$ 8 阿米尔 143 美元 9 里亚兹 311$ 10 块 139 美元 现在,我想要金额最高的前 3 个人的 ID。我搜索了一些像 window 函数,聚合组件,但我无法真正找到我需要的东西。谁能帮我解决这个问题?

我希望结果看起来像

id 数量 5 452 美元 3 345 美元 9311$

您能否使用 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

希望对你有所帮助...丰富

p.s。如果此(或其他)答案对您有帮助,请花点时间“接受”有帮助的答案,方法是单击答案旁边的复选标记,将其从“灰色”切换为“已填写”。

需要用到排名组件,按金额排序,window函数=行号。 然后将其输入过滤器组件,并且 select 行号 <=3