在 Supabase 上运行 SUM(*)

问题描述 投票:0回答:3

我从 Supabase 开始,想了解如何在

SUM()
中传递
SELECT
聚合器。

我注意到对于

COUNT
,我们使用:

const { data, error, range, count } = supabase
  .from('table')
  .select('*', { count: 'exact' })

还有什么类似

SUM
我没注意到的吗?

我的查询是这样的:

select
  "GE_PRODUCTS",
  sum("GE_QUANTITY") as Quantity,
  sum("GE_SALEVALUE") as Revenue
from "GE_SELLS"
where "GE_ENTERPRISE" = 'G.E.'
  and "DELETED" <> '*'
group by "GE_PRODUCTS"
order by Revenue desc
limit 3;
supabase-database
3个回答
3
投票

您最好的选择是将其放入 PostgreSQL 函数中并使用 .rpc()从 Supabase

调用它:


1
投票
CREATE OR REPLACE FUNCTION get_my_sums() RETURNS TABLE ( "GE_PRODUCTS" TEXT, Quantity NUMBER, Revenue NUMBER ) AS $$ DECLARE var_r record; BEGIN RETURN QUERY select "GE_PRODUCTS", sum("GE_QUANTITY") as Quantity, sum("GE_SALEVALUE") as Revenue from "GE_SELLS" where "GE_ENTERPRISE" = 'G.E.' and "DELETED" <> '*' group by "GE_PRODUCTS" order by Revenue desc limit 3; END; $$ LANGUAGE 'plpgsql';
    

0
投票

PostgREST v12 现在支持 Supabase Javascript SDK 的聚合函数:

const { data, error, range, count } = supabase .from('GE_SELLS') .select( 'GE_PRODUCTS, GE_QUANTITY.sum(), GE_SALEVALUE.sum()', { count: 'exact' } ) .eq('GE_ENTERPRISE', 'G.E.') .not('DELETED', 'eq', '*') .group('GE_PRODUCTS') .order('Revenue', { ascending: false }) .limit(3)
    
© www.soinside.com 2019 - 2024. All rights reserved.