select 每个 window 分区上的不同名称和用户名
select distinct name and username on each window partition on presto
我在 presto 上使用 window 函数来获取每个组的不同名称和用户名行。我确实在我的 name 列上应用了 ROW_NUMBER()
作为分区的 datetime 列作为排序依据,但我得到的结果低于结果
当前输出:
name top_user Count Date Price Percent Volume username
ENZC 1 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 DeviantImmortal
ENZC 5 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 OtcRock
ENZC 2 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 OtcRock
ENZC 3 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 STOCKAHOLIC55
ENZC 4 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 stockpro20
HCMC 3 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 Barta57
HCMC 5 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 PennyProfitPro
HCMC 2 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 Stocktipstoday1
HCMC 1 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 TTrader1976
HCMC 4 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 stockpro20
HQGE 5 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 BerkshireCapGrp
HQGE 1 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 OwnThePlayOTC
HQGE 2 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 PennyStockGeeks
HQGE 3 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 TaylorB16445829
HQGE 4 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 iammpremm
LTNC 2 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 BigTawno
LTNC 5 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 Faith03777244
LTNC 3 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 OneTickMoline
LTNC 1 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 OneTickMoline
LTNC 4 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 Stock_Pop
OZSC 2 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 JZavitka
OZSC 3 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 JZavitka
OZSC 1 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 S_AnglinIV
OZSC 4 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 S_AnglinIV
OZSC 5 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 claydeath1
SANP 2 5 2021-03-07 08:11:38.000 0.0049 101.04 907907634 1deadmanx
SANP 3 5 2021-03-07 08:11:38.000 0.0049 101.04 907907634 BillTsamis
SANP 5 5 2021-03-07 08:11:38.000 0.0049 101.04 907907634 Fluffypillows9
SANP 1 5 2021-03-07 08:11:38.000 0.0049 101.04 907907634 Fluffypillows9
当前查询:
SELECT * FROM
(
SELECT name, username , datetime, message,
ROW_NUMBER() OVER (PARTITION BY name ORDER BY datetime ASC) AS top_user FROM table_name
)
WHERE top_user < 6 ORDER BY name
预期输出:为每个window分区获取不同的名称和用户名,即没有两行任何window 具有相同的名称和用户名
name top_user Count Date Price Percent Volume username
ENZC 1 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 DeviantImmortal
ENZC 2 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 OtcRock
ENZC 3 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 STOCKAHOLIC55
ENZC 4 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 stockpro20
HCMC 3 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 Barta57
HCMC 5 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 PennyProfitPro
HCMC 2 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 Stocktipstoday1
HCMC 1 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 TTrader1976
HCMC 4 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 stockpro20
HQGE 5 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 BerkshireCapGrp
HQGE 1 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 OwnThePlayOTC
HQGE 2 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 PennyStockGeeks
HQGE 3 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 TaylorB16445829
HQGE 4 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 iammpremm
LTNC 2 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 BigTawno
LTNC 5 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 Faith03777244
LTNC 3 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 OneTickMoline
LTNC 4 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 Stock_Pop
OZSC 2 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 JZavitka
OZSC 1 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 S_AnglinIV
OZSC 5 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 claydeath1
SANP 2 5 2021-03-07 08:11:38.000 0.0049 101.04 907907634 1deadmanx
SANP 3 5 2021-03-07 08:11:38.000 0.0049 101.04 907907634 BillTsamis
SANP 1 5 2021-03-07 08:11:38.000 0.0049 101.04 907907634 Fluffypillows9
一种方法是过滤掉重复的用户名,首先按名称和用户名进行分区,然后再次按名称进行分区:
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY name ORDER BY datetime) rn2
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY name, username ORDER BY datetime) rn1
FROM tablename
) t1
WHERE t1.rn1 = 1
) t2
WHERE t2.rn2 < 6
我在 presto 上使用 window 函数来获取每个组的不同名称和用户名行。我确实在我的 name 列上应用了 ROW_NUMBER()
作为分区的 datetime 列作为排序依据,但我得到的结果低于结果
当前输出:
name top_user Count Date Price Percent Volume username
ENZC 1 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 DeviantImmortal
ENZC 5 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 OtcRock
ENZC 2 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 OtcRock
ENZC 3 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 STOCKAHOLIC55
ENZC 4 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 stockpro20
HCMC 3 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 Barta57
HCMC 5 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 PennyProfitPro
HCMC 2 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 Stocktipstoday1
HCMC 1 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 TTrader1976
HCMC 4 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 stockpro20
HQGE 5 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 BerkshireCapGrp
HQGE 1 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 OwnThePlayOTC
HQGE 2 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 PennyStockGeeks
HQGE 3 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 TaylorB16445829
HQGE 4 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 iammpremm
LTNC 2 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 BigTawno
LTNC 5 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 Faith03777244
LTNC 3 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 OneTickMoline
LTNC 1 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 OneTickMoline
LTNC 4 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 Stock_Pop
OZSC 2 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 JZavitka
OZSC 3 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 JZavitka
OZSC 1 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 S_AnglinIV
OZSC 4 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 S_AnglinIV
OZSC 5 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 claydeath1
SANP 2 5 2021-03-07 08:11:38.000 0.0049 101.04 907907634 1deadmanx
SANP 3 5 2021-03-07 08:11:38.000 0.0049 101.04 907907634 BillTsamis
SANP 5 5 2021-03-07 08:11:38.000 0.0049 101.04 907907634 Fluffypillows9
SANP 1 5 2021-03-07 08:11:38.000 0.0049 101.04 907907634 Fluffypillows9
当前查询:
SELECT * FROM
(
SELECT name, username , datetime, message,
ROW_NUMBER() OVER (PARTITION BY name ORDER BY datetime ASC) AS top_user FROM table_name
)
WHERE top_user < 6 ORDER BY name
预期输出:为每个window分区获取不同的名称和用户名,即没有两行任何window 具有相同的名称和用户名
name top_user Count Date Price Percent Volume username
ENZC 1 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 DeviantImmortal
ENZC 2 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 OtcRock
ENZC 3 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 STOCKAHOLIC55
ENZC 4 5 2021-03-07 08:11:14.000 0.1189 45.05 86131409 stockpro20
HCMC 3 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 Barta57
HCMC 5 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 PennyProfitPro
HCMC 2 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 Stocktipstoday1
HCMC 1 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 TTrader1976
HCMC 4 5 2021-03-07 08:34:33.000 0.0002 15.2 1376689232 stockpro20
HQGE 5 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 BerkshireCapGrp
HQGE 1 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 OwnThePlayOTC
HQGE 2 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 PennyStockGeeks
HQGE 3 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 TaylorB16445829
HQGE 4 6 2021-03-07 07:40:38.000 -0.0017 -16.04 63596752 iammpremm
LTNC 2 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 BigTawno
LTNC 5 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 Faith03777244
LTNC 3 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 OneTickMoline
LTNC 4 8 2021-03-07 08:33:19.000 0.0028 10.73 293126083 Stock_Pop
OZSC 2 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 JZavitka
OZSC 1 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 S_AnglinIV
OZSC 5 10 2021-03-07 08:34:38.000 0.0685 72.87 330616866 claydeath1
SANP 2 5 2021-03-07 08:11:38.000 0.0049 101.04 907907634 1deadmanx
SANP 3 5 2021-03-07 08:11:38.000 0.0049 101.04 907907634 BillTsamis
SANP 1 5 2021-03-07 08:11:38.000 0.0049 101.04 907907634 Fluffypillows9
一种方法是过滤掉重复的用户名,首先按名称和用户名进行分区,然后再次按名称进行分区:
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY name ORDER BY datetime) rn2
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY name, username ORDER BY datetime) rn1
FROM tablename
) t1
WHERE t1.rn1 = 1
) t2
WHERE t2.rn2 < 6