Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从SELECT在Oracle的SQL中使用了两个表的列中添加求和值_Sql_Oracle_Group By_Aggregate Functions - Fatal编程技术网

如何从SELECT在Oracle的SQL中使用了两个表的列中添加求和值

如何从SELECT在Oracle的SQL中使用了两个表的列中添加求和值,sql,oracle,group-by,aggregate-functions,Sql,Oracle,Group By,Aggregate Functions,我正在做一个作业,我需要根据它们的通用代码将一些值相加,例如,如果一个表有如下值 code | name --------------------- 1 | blah 2 | blah1 3 | blah2 1 | blah 然后是表2 code | amount ------------- 1 | 100 2 | 200 3 | 250 1 | 125 我需要用一个共同的代码把所有的

我正在做一个作业,我需要根据它们的通用代码将一些值相加,例如,如果一个表有如下值

  code   |   name
---------------------
1        |   blah
2        |   blah1
3        |   blah2
1        |   blah
然后是表2

code | amount
-------------
1    | 100
2    | 200
3    | 250
1    | 125
我需要用一个共同的代码把所有的值加起来,就像把代码为1的两个值的金额加起来,代码为2的值的金额加起来,代码为3的值的金额加起来一样

但是我还需要把所有的结果加起来。到目前为止,我已经用普通代码将行相加了。我只是在合计总数时遇到了问题,或者可能只是将“金额”列中的所有值相加。不过,我想把它放在一个单独的报表中,所以我想把单独的总额加起来会更容易

我想我已经记下了这个想法,我只是不知道如何实际执行它

现在,我有这个,我尝试了几种变体,包括使用HAVING子句,但仍然出现错误:

选择X_STORE.STORE_NAME作为店铺名称,选择SUMX_STORE_SALES.WEEKLY_SALES作为每周总销售额,选择SUMX_STORE_SALES.WEEKLY_SALES作为总销售额 从X_商店在X_商店上加入X_商店销售。商店销售代码=X_商店销售。商店销售代码 按门店名称分组; 以下是表格的代码,仅供参考:

创建表X_存储 存储\u代码整数, 商店名称:varchar220 ; 插入X_存储值'1','Access Junction'; 插入X_存储值'2','Database Corner'; 插入X_存储值'3','Tuple Charge'; 插入X_存储值'4','Attribute Alley'; 插入X_存储值'5','Primary Key Point'; 创建表X_商店_销售额 行号INT, 存储单元代码INT, 每周销售小数点12,2, 区域代码INT ; 插入X_商店_销售值1,1854558.38,1; 在X_商店中插入销售值2、2、689475.89、1; 在X_商店中插入销售值3,3978046.91,1; 在X_商店中插入销售值4,4,826270.78,1; 插入X_商店_销售值5,5,314859.95,1; 在X_商店_销售值中插入6,1402342.82,2; 在X_商店_销售值中插入7,2,326841.11,2; 在X_商店中插入销售值8,3503921.45,2; 在X_商店中插入销售值9,4,949408.97,2; 插入X_商店_销售值10,5581574.05,2; 在X_商店中插入销售值11,1638178.3,3; 插入X_商店_销售值12,251723.79,3; 在X_商店中插入销售值13,3556421.29,3; 在X_商店中插入销售值14,4951686.38,3; 在X_商店中插入销售值15,5902503.64,3; 在X_商店中插入销售值16,1443410.39,4; 在X_商店中插入销售值17,2281833.15,4; 在X_商店中插入销售值18,3409222.16,4; 在X_STORE_销售值中插入19,4853611.42,4; 插入X_商店_销售值20,511828.64,4; 预期输出如下所示:

store name        | total weekly sales
--------------------------------------
Attribute Alley   |         3580977.55
--------------------------------------
Primary Key Point |         1917166.28
--------------------------------------
Database Corner   |         1809873.94
--------------------------------------
Access Junction   |         2338489.89
--------------------------------------
Tuple Charge      |         2447611.81
--------------------------------------
grand total (or   |
just null, doesn't|      12,094,119.47
really matter)    |
但是,与我尝试的最后一个想法相反,我得到了一个错误消息,它只说:ORA-00923:不是一个单一的组函数


我认为我可能做错了一件事,那就是像查询新专栏一样查询信息,因此它会因此而崩溃,但我不知道如何解决这个问题,也不知道如何通过“谷歌”来获得想法。

删除总计。此外,您的查询中有一个小错误:您编写了SUMSUM。。。。那是无效的

如果删除总计,它应该可以工作,如中所示:

SELECT
  X_STORE.STORE_NAME AS "store name", 
  SUM(X_STORE_SALES.WEEKLY_SALES) AS "total weekly sales"
FROM X_STORE
JOIN X_STORE_SALES ON X_STORE.STORE_CODE = X_STORE_SALES.STORE_CODE
GROUP BY STORE_NAME
结果:

store name         total weekly sales 
-----------------  ------------------ 
Primary Key Point  1,917,166.28       
Access Junction    2,338,489.89       
Attribute Alley    3,580,977.55       
Tuple Charge       2,447,611.81       
Database Corner    1,809,873.94       

除去总数。此外,您的查询中有一个小错误:您编写了SUMSUM。。。。那是无效的

如果删除总计,它应该可以工作,如中所示:

SELECT
  X_STORE.STORE_NAME AS "store name", 
  SUM(X_STORE_SALES.WEEKLY_SALES) AS "total weekly sales"
FROM X_STORE
JOIN X_STORE_SALES ON X_STORE.STORE_CODE = X_STORE_SALES.STORE_CODE
GROUP BY STORE_NAME
结果:

store name         total weekly sales 
-----------------  ------------------ 
Primary Key Point  1,917,166.28       
Access Junction    2,338,489.89       
Attribute Alley    3,580,977.55       
Tuple Charge       2,447,611.81       
Database Corner    1,809,873.94       

您将联接这些表并使用group by获得分组的总和。 然后使用UNION,您将向结果中添加总计:

select 
  t.store_name,
  sum(s.weekly_sales) total_weekly_sales
from x_store t inner join x_store_sales s
on s.store_code = t.store_code
group by t.store_code, t.store_name
union all
select 
  'grand total',
  sum(weekly_sales) total_weekly_sales
from x_store_sales
看。 或更有效地使用CTE:

with cte as (
  select 
    t.store_name,
    sum(s.weekly_sales) total_weekly_sales
  from x_store t inner join x_store_sales s
  on s.store_code = t.store_code
  group by t.store_code, t.store_name
)
select * from cte
union all
select 
  'grand total',
  sum(total_weekly_sales)
from cte

您将联接这些表并使用group by获得分组的总和。 然后使用UNION,您将向结果中添加总计:

select 
  t.store_name,
  sum(s.weekly_sales) total_weekly_sales
from x_store t inner join x_store_sales s
on s.store_code = t.store_code
group by t.store_code, t.store_name
union all
select 
  'grand total',
  sum(weekly_sales) total_weekly_sales
from x_store_sales
看。 或更有效地使用CTE:

with cte as (
  select 
    t.store_name,
    sum(s.weekly_sales) total_weekly_sales
  from x_store t inner join x_store_sales s
  on s.store_code = t.store_code
  group by t.store_code, t.store_name
)
select * from cte
union all
select 
  'grand total',
  sum(total_weekly_sales)
from cte

如果只需要包含总计的行,请使用分组集:


如果只需要包含总计的行,请使用分组集: