在SQL中使用group by时如何求列的和?

在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 |

我是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 | 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中的文档了解窗口函数,开始了解它们。