电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

mysql累加計算實(shí)現(xiàn)方法詳解

瀏覽:8日期:2023-10-14 18:30:57

本文實(shí)例講述了mysql累加計算。分享給大家供大家參考,具體如下:

前言

接了一個需求,產(chǎn)品想分析一下用戶增長的曲線。也就是某個時間段的每日總?cè)藬?shù)列表。好對近期活動進(jìn)行一個效果的評測。這個統(tǒng)計sql還是花了我一小段時間的。mysql統(tǒng)計這個還是需要一定的技巧的。

需求分析 user_id reg_time 1 2019-09-03 2 2019-09-04 3 2019-09-04 4 2019-09-05 5 2019-09-05 6 2019-09-06

假如上表user_info,我們很容易根據(jù)時間維度統(tǒng)計出每日新增的人數(shù)。sql如下:

select reg_time, count(user_id) daily_quantity from user_infogroup by reg_time

通過上面的sql我們很容易得出以下列表:

reg_time daily_quantity 2019-09-03 1 2019-09-04 2 2019-09-05 2 2019-09-06 1

但是這個并不是我們想要的結(jié)果。我們想要的應(yīng)該是 上一天的總?cè)藬?shù)加上今天的凈增長數(shù),以此類推。也就是我們想要:

reg_time daily_quantity 2019-09-03 1 2019-09-04 3 2019-09-05 5 2019-09-06 6

這就有點(diǎn)棘手了,我們需要進(jìn)行累加計算。我嘗試了自鏈接,函數(shù)等一些操作后還是沒有得到一個正確的結(jié)果。這時想到如果是java代碼處理這個就再合適不過了,我們只要聲明初始值,然后循環(huán)累加就能計算出結(jié)果了:

public static void main(String[] args) { int[] arr = {1, 2, 2, 1}; int[] ints = dailyQuantityArr(0, arr); for (int i : ints) { System.out.println('i = ' + i); } } public static int[] dailyQuantityArr(int base, int[] dailyIncrQuantity) { int[] result = new int[dailyIncrQuantity.length]; // 累加填充 for (int i = 0; i < dailyIncrQuantity.length; i++) { base += dailyIncrQuantity[i]; result[i] = base; } return result; }

上面的偽代碼就可以計算出結(jié)果。當(dāng)然如果可以的話盡量在java業(yè)務(wù)代碼進(jìn)行這種復(fù)雜運(yùn)算。但是產(chǎn)品給出的需求是我們能夠提供一句sql能夠直接在可視化數(shù)據(jù)引擎中得出他要的答案。于是從上面的代碼得出靈感。mysql是否有這種變量呢? 有!當(dāng)然有。記得很普遍的場景,以前經(jīng)常有業(yè)務(wù)需要我們輸出序號,Oracle是自帶一個偽列rownum,但是mysql沒有。mysql通常通過聲明自增變量來生成序號。拿user_info表舉例子:

select (@i:=@i+1) as rownum, user_id from user_info ,(select @i:=0) as rMysql 用戶變量

mysql 變量分為 局部變量、用戶變量、會話變量、全局變量 。上面的語句我們使用的是用戶變量。用戶變量與數(shù)據(jù)庫連接有關(guān),在連接中聲明的變量,在存儲過程中創(chuàng)建了用戶變量后一直到數(shù)據(jù)庫實(shí)例接斷開的時候,變量就會消失。在此連接中聲明的變量無法在另一連接中使用。MySQL中用戶變量不用事前申明,使用的時候以@varname的格式進(jìn)行聲明。通過:=或者=進(jìn)行賦值操作。如果需要對外輸出需要用select關(guān)鍵字,而且賦值必須使用:=。

使用Mysql用戶變量進(jìn)行累加計算

我們學(xué)習(xí)了用戶變量后就知道如何進(jìn)行累加計算了,那么user_info表的日累計總?cè)藬?shù)應(yīng)該是這樣的:

select a.reg_time, a.daily, @i:=@i+a.daily as daily_quantity from (select reg_time , count(user_id) daily from user group by reg_time ) a , (select @i:=0) b

查詢的結(jié)果如下,符合邏輯需要。

reg_time daily daily_quantity 2019-09-03 1 1 2019-09-04 2 3 2019-09-05 2 5 2019-09-06 1 6

但是這里有一個小坑,在實(shí)際業(yè)務(wù)中@i初始化的時候有可能不為0,比如我們統(tǒng)計上面9月4號到9月6號這時候之前的總?cè)藬?shù)為1 。 這個要特別注意。實(shí)際業(yè)務(wù)開發(fā)中如果我們能在邏輯編碼中實(shí)現(xiàn)還是建議在邏輯編碼中進(jìn)行一些復(fù)雜的運(yùn)算。

總結(jié)

今天我們通過mysql用戶變量解決了一個在sql中累加計算的問題。不知道你有沒有其它好的思路呢?歡迎留言討論。

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲過程技巧大全》、《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》及《MySQL常用函數(shù)大匯總》

希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 驾驶人在线_专业学车门户网站 | 睿婕轻钢别墅_钢结构别墅_厂家设计施工报价 | 涡轮流量计_LWGY智能气体液体电池供电计量表-金湖凯铭仪表有限公司 | 保温杯,儿童婴童奶瓶,运动水壶「广告礼品杯定制厂家」超朗保温杯壶 | 杭州可当科技有限公司—流量卡_随身WiFi_AI摄像头一站式解决方案 | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 | 美甲贴片-指甲贴片-穿戴美甲-假指甲厂家--薇丝黛拉 | 三效蒸发器_多效蒸发器价格_四效三效蒸发器厂家-青岛康景辉 | 【星耀裂变】_企微SCRM_任务宝_视频号分销裂变_企业微信裂变增长_私域流量_裂变营销 | 过滤器_自清洗过滤器_气体过滤器_苏州华凯过滤技术有限公司 | 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | ISO9001认证咨询_iso9001企业认证代理机构_14001|18001|16949|50430认证-艾世欧认证网 | 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 标准件-非标紧固件-不锈钢螺栓-非标不锈钢螺丝-非标螺母厂家-三角牙锁紧自攻-南京宝宇标准件有限公司 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | 工业设计,人工智能,体验式3D展示的智能技术交流服务平台-纳金网 J.S.Bach 圣巴赫_高端背景音乐系统_官网 | IWIS链条代理-ALPS耦合透镜-硅烷预处理剂-上海顶楚电子有限公司 lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 合肥礼品公司-合肥礼品定制-商务礼品定制公司-安徽柏榽商贸有限公司 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 江苏远邦专注皮带秤,高精度皮带秤,电子皮带秤研发生产 | 档案密集柜_手动密集柜_智能密集柜_内蒙古档案密集柜-盛隆柜业内蒙古密集柜直销中心 | 空气净化器租赁,空气净化器出租,全国直租_奥司汀净化器租赁 | 视频教程导航网_视频教程之家_视频教程大全_最新视频教程分享发布平台 | 石油/泥浆/不锈钢防腐/砂泵/抽砂泵/砂砾泵/吸砂泵/压滤机泵 - 专业石油环保专用泵厂家 | 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 二手色谱仪器,十万分之一分析天平,蒸发光检测器,电位滴定仪-湖北捷岛科学仪器有限公司 | 温室大棚建设|水肥一体化|物联网系统 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 橡胶弹簧|复合弹簧|橡胶球|振动筛配件-新乡市永鑫橡胶厂 | 篮球架_乒乓球台_足球门_校园_竞技体育器材_厂家_价格-沧州浩然体育器材有限公司 | 通信天线厂家_室分八木天线_对数周期天线_天线加工厂_林创天线源头厂家 | 粘度计NDJ-5S,粘度计NDJ-8S,越平水分测定仪-上海右一仪器有限公司 | 设定时间记录电子秤-自动累计储存电子秤-昆山巨天仪器设备有限公司 | 雷冲击高压发生器-水内冷直流高压发生器-串联谐振分压器-武汉特高压电力科技有限公司 | 东莞市超赞电子科技有限公司 全系列直插/贴片铝电解电容,电解电容,电容器 | 标准光源箱|对色灯箱|色差仪|光泽度仪|涂层测厚仪_HRC大品牌生产厂家 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 |