数据库
首页 > 数据库> > Mysql的常用语句

Mysql的常用语句

作者:互联网

一.mysql查询——计算占比与累计占比

比如我们有一个销量数据表(product_sales),其中包含字段序号Id、产品product、销量Sales,现在需要编写一个查询语句,计算出各产品的销量占比和累计销量占比。

 

 

第一步,计算总的产品销量

select sum(sales)as sum_sales from product_sales;

 

 

第二步,计算各产品的销量占比

select product,sales,

concat(left(sales/sum_sales*100,5),'%')as pro

from product_sales,

(select sum(sales)as sum_sales from product_sales)s

order by sales desc;

 

 

第三步,计算各产品的累计销量

select product,sales,

@cum_sales:=@cum_sales+sales as cum_sales

from product_sales,

(select @cum_sales:=0)c

order by sales desc;

 

 

 

第四步,计算各产品的累计销量占比

select product,sales,

@cum_sales:=@cum_sales+sales as cum_sales,

concat(left(@cum_sales/sum_sales*100,5),'%')as cum_pro

from product_sales,

(select @cum_sales:=0)c,

(select sum(sales) as sum_sales from product_sales)s

order by sales desc;

 

 

第五步,将第一步到第四步连接起来得到最终的查询语句:

select product,sales,

#计算各产品销量占比

concat(left(sales/sum_sales*100,5),'%')as pro,

#计算各产品的累计销量

@cum_sales:=@cum_sales+sales as cum_sales,

#计算各产品的累计销量占比

concat(left(@cum_sales/sum_sales*100,5),'%')as cum_pro

from product_sales,

(select @cum_sales:=0)c,

(select sum(sales) as sum_sales from product_sales)s

order by sales desc;

 

 

在mysql8.0及以上版本中第二步计算各产品的累计销量也可以通过将聚合函数sum作为窗口函数来实现,因此最终查询语句也可表示为:

select product,sales,

#计算各产品销量占比

concat(left(sales/sum_sales*100,5),'%')as pro,

#计算各产品的累计销量

sum(sales)over(order by sales desc)as cum_sales,

#计算各产品的累计销量占比

concat(left(sum(sales)over(order by sales desc)/sum_sales*100,5),'%')as cum_pro

from product_sales,

(select sum(sales) as sum_sales from product_sales)s

order by sales desc;

二:sql语句 如何分组后得到记录总数

SELECT COUNT(*)
FROM (SELECT 分组字段 FROM 表
GROUP BY 分组字段
)别名


或者


SELECT COUNT(*)
FROM (SELECT distinct 分组字段 FROM 表)别名

标签:语句,常用,sum,sales,销量,product,Mysql,cum,select
来源: https://www.cnblogs.com/yongyuankuaile/p/15382637.html