在SQL中使用group by时如何求列的和?
我是SQL新手,我在这里有一个使用此查询的表:在SQL中使用group by时如何求列的和?,sql,group-by,sum,mariadb,Sql,Group By,Sum,Mariadb,我是SQL新手,我在这里有一个使用此查询的表: select shop_name, sum(sales) as 'total_sales', concat((sum(sales)/10250) * 100, '%') as 'sales_percentage' from pos group by shop_name; 输出: +-----------+-------------+------------------+ | shop_name | total_sales |
select
shop_name, sum(sales) as 'total_sales',
concat((sum(sales)/10250) * 100, '%') as 'sales_percentage'
from pos
group by shop_name;
输出:
+-----------+-------------+------------------+
| shop_name | total_sales | sales_percentage |
+-----------+-------------+------------------+
| shop1 | 3250 | 31.7100% |
| shop2 | 3750 | 36.5900% |
| shop3 | 3250 | 31.7100% |
+-----------+-------------+------------------+
我通过作弊实现了这一点,我自己加上了总销售额(10250),但我想知道在使用group by时如何获得总销售额的总和(因为如果我没有使用group by,我可以通过使用sum(销售额)轻松输出10250)
先谢谢你
使用窗口功能:
select shop_name, sum(sales) as total_sales,
concat((sum(sales)/sum(sum(sales) over ()) * 100, '%') as sales_percentage
from pos
group by shop_name;
注意,我从列别名中删除了单引号。最重要的是,它们是不需要的。但实际上,不要将字符串文字与列别名混淆;它们是不同的,没有必要对别名使用单引号(必要时使用反勾号或双引号转义名称)。我可以知道这里到底发生了什么吗?对不起,我只是一名学生,我们还没有做到这点。@DaveIsraelGundiao。该函数是计算所有行的总和的简便方法。您可以参考MariaDB中的文档了解窗口函数,开始了解它们。