mysql 按时间累计计算_mysql查询——计算占比与累计占比
下表是2020年3月各产品的销量数据表(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;
往期精选:
mysql中数据累加的方法
删除重复的数据
mysql合并连接单元格内容
mysql 按时间累计计算_mysql查询——计算占比与累计占比相关推荐
- mysql查询特定时间数据视频_mysql查询特定时间段内的数据
参照文章(mysql查询时间段内数据)进行了操作. 先来建表语句: [sql] view plaincopySETFOREIGN_KEY_CHECKS=0;-- ------------------- ...
- mysql查询时间出来数字_mysql查询时间出来数字的解决方法
mysql查询时间出来数字的解决方法 发布时间:2020-11-16 10:50:29 来源:亿速云 阅读:108 作者:小新 这篇文章将为大家详细讲解有关mysql查询时间出来数字的解决方法,小编觉 ...
- mysql基于时间盲注_MYSQL基于时间的盲注详解
MYSQL基于时间的盲注 联合查询,报错注入,以及布尔盲注,都是基于攻击网站会回显消息,或者将错误信息返回在前端,或者会返回web页面的正确或错误 但是有时候网站关闭了错误回显或过滤了某些关键字,网页 ...
- mysql长时间后断开_mysql 长时间没连接了 就会自动断开服务
这是因为mysql 长时间没连接了 就会自动断开服务. 解决办法 1.首先,下载必须的jar包 dbcp 包,目前版本是1.2.1:http://jakarta.apache.org/commons/ ...
- mysql timediff 时间相减_mysql时间相减的问题
mysql时间相减的问题(bug) 今天看到宁青同学的一条微博,提到MySQL日期相减的错误结果,以前没有怎么注意,于是测试了一下,发现确实很坑爹,很容易踩雷,于是整理博客提醒一下大家. 先看一下错误 ...
- mysql空间计算_MySQL 空间计算 空间查询
一.前言 MySQL实施了OGC建议的具有Geometry类型的SQL环境的一个子集.该术语指的是用一组集合类型扩展的环境.具有几何值的SQL列是作为拥有集合类型的列实施的.该规范描述了SQL几何类型 ...
- mysql 经纬度距离 自定义函数_mysql 经纬度计算距离 自定义函数
这些经纬线是怎样定出来的呢? 地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等,这个圆圈就叫作&quo ...
- mysql 前n个最大值_MySQL varchar计算:求列的数目和计算N的最大值
MySQL varchar计算:求列的数目和计算N的最大值 有道面试题:若一张表中只有一个字段VARCHAR(N)类型,utf8编码,则N最大值为多少? 先明白计算的一些规则限制 ① 存储限制 需要额 ...
- mysql 单精度和双经度_mysql 下 计算 两点 经纬度 之间的距离 计算结果排序
根据经纬度计算距离公式 公式 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung ...
最新文章
- 【实战经验分享】一劳永逸的解决网线随意热插拔问题
- “std::invoke”: 未找到匹配的重载函数
- 机器人动力学方程的性质
- VB中判断空的几种方法,Null, Missing, Empty, Nothing, vbNullString区别
- SpringBatch读文件(FlatFileItemReader)写据库(MyBatisBatchItemWriter)(四)
- Kyoya and Photobooks
- 什么是计算机独立显卡,独立显卡是什么
- ifamre 大小随页面变_SEO优化中如何让你的页面访问速度更快
- 菜鸟学Struts2——Interceptors
- 键盘上各种特殊符号的英文读法
- C#中如何跨窗体传值
- python 提取代码中的所有汉字
- 树莓派输出PWM波驱动舵机
- java shiro原理_Shiro的原理及Web搭建
- C语言求阶乘尾数零的个数
- 以树之名,诉春之情--F1503005班团改金
- python实现excel计算_用python实现简单EXCEL数据统计的实例
- win10查看电池损耗
- android 9 qq登录,【报Bug】安卓离线打包targetSdkVersion设置28时,在安卓9.0手机上QQ授权登录闪退...
- 转: Windows句柄数的限制
热门文章
- wps linux 无法输入中文,WPS for linux 中不能切换到中文输入法
- php mysql多线程处理数据6_PHP WIN MYSQL Rdeis 下多进程处理产品数据测试 31 万条 6 进程...
- 养生之道---六字气决
- Unity3D教程:简单的碰撞检测
- 提分必练,中创教育PMP全真模拟题分享来喽
- C# WinRar 解压缩
- opengl android 纹理贴图 代码,Android 使用opengl es的纹理贴图白屏问题请教。
- php获取用户和服务器ip及其地理位置详解
- 2--STM32+USB移植+HID 与AUDIO类MIDI设备组成的复合设备
- 香港十大炒黄金交易公司排名2020版一览