Sql 如何基于多列上的“选择不同”进行求和

Sql 如何基于多列上的“选择不同”进行求和,sql,Sql,我有一个表,其中有3个数字列a、b、c和两个分类列x、y。我想对a、b和c进行求和,但要基于每个唯一的x和y组合。我该怎么做? 我尝试了以下代码 SELECT SUM(CAST(t.a as INT64)) as a_, SUM(CAST(t.b as INT64)) as b_ , SUM(CAST(t.c as INT64)) as c_, FROM ( SELECT DISTINCT x ,y FROM <table_name> ) t 现在我得到的是一个

我有一个表,其中有3个数字列a、b、c和两个分类列x、y。我想对a、b和c进行求和,但要基于每个唯一的x和y组合。我该怎么做? 我尝试了以下代码

SELECT   
SUM(CAST(t.a as INT64)) as a_,
SUM(CAST(t.b  as INT64)) as b_ ,
SUM(CAST(t.c  as INT64)) as c_,

FROM (
  SELECT DISTINCT x ,y FROM <table_name>  
) t
现在我得到的是一个未找到的insde t


我怎样才能解决这个问题?我做错了什么?

在这种情况下,您需要使用group by

SELECT   
x,
y,
SUM(CAST(t.a as INT64)) as a_,
SUM(CAST(t.b  as INT64)) as b_ ,
SUM(CAST(t.c  as INT64)) as c_

from
<table_name>  
group by x, y

在这种情况下,您需要使用group by

SELECT   
x,
y,
SUM(CAST(t.a as INT64)) as a_,
SUM(CAST(t.b  as INT64)) as b_ ,
SUM(CAST(t.c  as INT64)) as c_

from
<table_name>  
group by x, y

如果这些值已经是数字了,为什么还要进行转换?我想你想要:

SELECT x, y, SUM(a) as sum_a, SUM(b) as sum_b, SUM(c) as sum_c
FROM t
GROUP BY x, y;
SUM(a + b + c) as sum_abc,
如果你想要你的问题所暗示的三者的总和,那么你想要:

SELECT x, y, SUM(a) as sum_a, SUM(b) as sum_b, SUM(c) as sum_c
FROM t
GROUP BY x, y;
SUM(a + b + c) as sum_abc,
或:


如果有任何值为NULL,则后两个值会有细微的不同。不清楚您可能想要哪个。

如果值已经是数字,为什么要强制转换这些值?我想你想要:

SELECT x, y, SUM(a) as sum_a, SUM(b) as sum_b, SUM(c) as sum_c
FROM t
GROUP BY x, y;
SUM(a + b + c) as sum_abc,
如果你想要你的问题所暗示的三者的总和,那么你想要:

SELECT x, y, SUM(a) as sum_a, SUM(b) as sum_b, SUM(c) as sum_c
FROM t
GROUP BY x, y;
SUM(a + b + c) as sum_abc,
或:


如果有任何值为NULL,则后两个值会有细微的不同。尚不清楚您可能需要哪一个。

示例数据确实有助于解决您的问题。您使用的是哪种DBMS产品?SQL只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加。示例数据对您的问题很有帮助。您使用的是哪种DBMS产品?SQL只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加。