使用 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
我有一个 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