.sql文件_Mysql分组排序及Sql文件执行

    最近在做一个临时项目,采用的是mysql开发,主要涉及两个问题:1.一个是传参问题;2.另一个是实现对数据分组取前4的数据。个人感觉很有意义,特此记录一下。

一.传参问题

    执行mysql文件,需要从外部传入参数时,mysql没有hive那么灵活,只有通过sed命令进行处理,比如有sql文件a.sql内容大致如下:

create table if not exists dp_collection.dc_sale_ztds_brand_base_week_info(

id INT  PRIMARY KEY AUTO_INCREMENT,

plan_id varchar(60)  default  null comment '智投方案id',

brand_name varchar(60)  default  null comment '品牌名称',

put_model varchar(60)  default  null comment '投放模式',

sign_city varchar(60)  default  null comment '签约城市',

start_date_w varchar(60)  default  null comment '当前经营周开始日期',

end_date_w varchar(60)  default  null comment '当前经营周结束日期',

logo_url varchar(500)  default  null comment '品牌logo图片',

lbs_url varchar(500)  default  null comment 'LBS固定图片',

word_cloud_url varchar(500)  default  null comment '词云固定图片',

insert_time datetime  default '1991-01-01 11:11:11' comment '入库时间',

update_time datetime   DEFAULT CURRENT_TIMESTAMP comment '更新时间'

)

comment='xxx';

truncate  table dp_collection.dc_sale_ztds_brand_base_week_info;

insert into dp_collection.dc_sale_ztds_brand_base_week_info(plan_id,brand_name,put_model,sign_city,start_date_w,end_date_w,logo_url,lbs_url,word_cloud_url,insert_time)

select 

t1.plan_id

,t1.brand_name

,t1.put_model

,t1.sign_city

,t2.j_wfirst_date as start_date_w

,t2.j_wend_date as end_date_w

,t1.logo_url

,t1.lbs_url

,t1.word_cloud_url

,now() as insert_time

from dp_collection.dc_sale_ztds_brand_base_info t1

left join  dp_collection.dim_date t2 on t2.`date`=@current_date;

    执行的命令大致如下:

sed -i "1 i\ set @current_date='$current_date';" ztds_brand_lanuch_info.sql

mysql -h1.1.1.1 -udp_collection -pxxxxxx -Ddp_collection

sed -i "1d" a.sql

    主要是先通过替换sql的变量,然后再还原的用法。

(ps:注意a.sql文件里面不能有中文,否则执行会报错)

二.mysql组内分组取数

     该sql主要是通过先查询出t1的数据,然后一条一条和where子查询里面的数据进行对比,取出每个分组中的前4条,这种用法感觉有点巧妙,

 sql文件内容:SELECT t1.plan_id,t1.launch_city FROM dp_collection.ztds_brand_city_info_tmp t1 WHERE 4>(SELECT COUNT(*) FROM dp_collection.ztds_brand_city_info_tmp 

WHERE plan_id=t1.plan_id  and plan_launch_point_num>t1.plan_launch_point_num) ORDER BY t1.plan_id,t1.plan_launch_point_num desc;

    通过explain查看,可以看出该语法的性能很差,后期可以考虑其他方式进行优化。

f67ddb5625eff83b870a5e3c768621fc.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 动态库 后缀,Android Robolectric加载运行本地So动态库

前言Robolectric 是 Android 的单元测试框架,运行无需 Android 真机环境直接运行在 JVM 之上,所以在 test case 运行速度效率上有了很大提升,接近于 Java JUnit test(JUnit test > Robolectric ≫ androidTest)。不过框架本身并不支持 so …

java web输出语句到控制台_Java工程师(6).循环结构

搞清楚循环结构语句的执行效果与使用场景。程序中的循环流程程序中的循环流程试着编写程序实现下列功能:在控制台中输出100个Hello字符串。在控制台中输出从 1 到 100 的数字。… …循环结构的三要素循环结构必然包含如下三要素:循环变量 (循…

sap生产工单报工_SAP系统PP (ProductionPlanning) 模块知识培训

SAP系统PP(ProductionPlanning)模块知识培训主要内容为支持生产系统规范使用SAP系统开展日常业务,掌握SAP系统常用操作和异常处理的方法,人力资源部在6月10日下午组织实施了一期《SAP系统PP模块知识》的培训。本次培训由信息技术部主管工程师解虎授课&am…

64位程序怎么判断指针是否有效_AArch64应用程序级编程模型

根据实现选择,体系结构支持多级执行特权,由从EL0到EL3的不同异常级别表示。EL0对应于最低的特权级别,通常被描述为无特权。应用层程序员模型是在EL0上执行软件的程序员模型。系统软件决定异常级别,因此决定软件运行的特权级别。当…

n个小球放入m个盒子中_飞么盒子卫生巾自助售卖机前景

嘿,你有没有经历过,出门在外来大姨妈却没带M巾呢?尴尬丛生的你选择怎么做?现在,有了新选择,这也是今天我们迫不及待想要和你们介绍的新朋友—飞么盒子,由Faimes飞么品牌自主研发出品的卫生巾售卖…

Android代码设置角标,Android上的Badge,快速实现给应用添加角标

应用角标是iOS的一个特点,原生Android并不支持。或许是由于当时iOS的通知栏比较鸡肋(固然如今已经改进了不少),而Android的通知栏功能强大?因此才出现了一方依赖于数字角标,一方坚持强大的通知栏,在平常使用中这两种交…

opencv模糊图像变清晰_opencv-python 4.2图像模糊

图像模糊可以去除噪音。import cv2 import numpy as npimage cv2.imread("dogcat1.jpg") cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE) cv2.imshow("input image", image)#均值模糊 dst cv2.blur(image, (5, 5)) cv2.imshow("…

datatable怎么根据两列分组_公司要IT转型,我该怎么办?用Python进行数据处理

“ 以后数据处理,都用pandas”01 面临问题作为运维人员,每周要统计很多数据,特别是周四写周报的时候,基本要花半天时间。既然已经学了Python,那就试试优化它。以统计不同厂家、不同设备类型告警量为例。需要将多份类似…

pandas尾部添加一条_Numpy与Pandas

Numpy#导入numpy包 import numpy as np ##from numpy import * #定义数组 #一维数组 anp.array([1,2,3,4]) #二维数组 bnp.array([(1,2,3),(4,5,6)]) #定义数组类型 cnp.array([(1,2),(3,4)],dtypecomplex) #array([[ 1.0.j, 2.0.j],[ 3.0.j, 4.0.j]])#数组的维数 a.shape #(…

python爬虫获取url_Python爬虫如何获取页面内所有URL链接?本文详解

如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL。什么是Beautiful Soup? Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索…

iview table增加一行减少一行_PQ入门函数:Table.ReplaceValue

一、基础介绍Table.ReplaceValue函数的官方说明如下:Table.ReplaceValue(table as table, oldValue as any, newValue as any, replacer as function, columnsToSearch as list)该函数实现的功能是将Table中的值替换成新值,语法翻译成汉语大致如下&#…

gprs模块ftp 远程升级_基于GPRS无线通信技术的冷链监测系统

GPRS(general packet radio service)是通用分组无线业务的简称,该技术建立在GSM网络的基础上,被称为2.5 代移动通信技术,它将无线通信与Internet 紧密结合。基于GPRS的远程数据采集系统是通过中国移动的GPRS无线通信网…

小米登录协议分析_联想前副总裁常程跳槽小米数月后,波澜再起

► 文 观察者网 吕栋今年初,联想集团前副总裁常程离职2天即加盟小米,这一举动是否违反竞业协议,双方当时曾各执一词。最近,由于联想方面在北京提起劳动仲裁,此事也再度引发舆论关注。9月21日,针对“联想与…

值从哪里来_Linux used内存到底去哪里了呢?

Linux used内存到底去哪里了呢?阅读文章之前请先思考这么个问题我ps aux看到的RSS内存只有不到30M,但是free看到内存却已经使用了7,8G了,已经开始swap了,请问ps aux的实际物理内存统计是不是漏了哪些内存没算?我有什么…

html文本最小长度,CSS中处理不同长度文本的几种小技巧

CSS中处理不同长度文本的几种小技巧【推荐教程:CSS视频教程 】当我们使用 CSS 构建布局时,考虑长短文本内容很重要,如果能清楚地知道当文本长度变化时需要怎么处理,可以避免很多不必要的问题。在许多情况下,添加或删除…

matlab 判断鼠标按下_Simulink(其他校验模块)+Matlabgui(鼠标响应事件)+Stateflow汽车运动逻辑状态(二)...

1 SimulinkSimulink-其他校验模块 如下图所示为一些其他的校验模块,分别为声明模块,离散梯度模块,输入分辨率检测模块;声明模块:当输入值非零时检测通过,当输入值中包含有0时,检测模块报错。…

鸿蒙电脑操作系统最新消息,5G专家预测:7年后鸿蒙将成全球第一大操作系统

在公布两年之后,华为的鸿蒙系统历尽千难万险,蓄势待发,即将在6月2日的线上发布会上正式发布。对于鸿蒙的前景,通信行业的 5G 专家项立刚在接受采访中,在谈到对鸿蒙的看法时,他表示他相信 7 年后鸿蒙会成为全…

vivado顶层模块怎么建_【第2040期】Node 模块化之争:为什么 CommonJS 和 ES Modules 无法相互协调...

前言又到周五了。今日早读文章由Shopee周雨楠翻译授权分享。周雨楠,Shopee金融事业群前端研发,自主学习前端技术3年,喜爱各类数字媒体技术、创意设计,多次参与翻译工作。福利:有两张门票,有需要的跟情封联系…

centos7 转换为lvm_(建议收藏)CentOS7挂载未分配的磁盘空间以及LVM详细介绍

简述本文主要介绍CentOS7下如何挂载未分配磁盘空间的详细操作步骤。LVMLVM,逻辑卷管理,英文全称Logical Volume Manager,是Linux环境下对磁盘分区进行管理的一种机制。是在硬盘分区和文件系统之间添加的一个逻辑层,为文件系统屏蔽…

基于python的图书管理系统测试步骤_Django admin实现图书管理系统菜鸟级教程完整实例...

Django 有着强大而又及其易用的admin后台,在这里,你可以轻松实现复杂代码实现的功能,如搜索,筛选,分页,题目可编辑,多选框. 简单到,一行代码就可以实现一个功能,而且模块之间耦合得相当完美. 不信,一起来看看吧!?用Django实现管理书籍的系统,并能在前台界面对书籍进行增删查改…