-
按该字段排序时,多行中相同的只取第一-----------行如何查询出这样的数据?
2017-03-25 19:41:15有这样的表数据, ID UserName Logintime 1 cowbo 2017-1-1 10:50 2 cowbo 2017-2-1 10:50 3 cowbo 2017-3-1 10:50 4 hackc 2017-3-2 10:50 如何查询出: ID UserName Logintime 1 cowbo 2017-1-1 10:50 ... -
MySQL分组排序取第一列数据的方法
2019-02-25 23:23:14需求分析:多行数据分组排序之后,如何获取第一行数据?具体案例如下: 根据要求查询结果: 查询结果username不能重复; username重复的选择条件是status为1则选择该条,多个1则按照createtime选取最近的一条; ...需求分析:多行数据分组排序之后,如何获取第一行数据?具体案例如下:
根据要求查询结果:- 查询结果username不能重复;
- username重复的选择条件是status为1则选择该条,多个1则按照createtime选取最近的一条;
- status都为0,根据createtime选择最新的一条;
按照上述要求,筛选出来的结果应为红色框选的结果。
,',',1) as userid, username, substring_index(group_concat(status order by status desc, createtime desc),',',1) as status, substring_index(group_concat(createtime order by status desc, createtime desc),',',1) as createtime from sysuser group by username;
使用了group_concat()和substring_index()两个函数的结合。
group_concat():根据group by分组和排序参数之后,将字段使用‘,’连接起来;
substring_index():使用‘,’分割,而后取第一个元素。
-
hive函数--行转列union all &一行拆多行lateral view explode&多行转一行group_concat()
2018-04-25 00:20:41工作几年,越来越发现行列转换非常重要...1.行转列 union all:表result:student_id,class,score学生的语数外物化都在一张表里,每个学生对应有五行数据,如何变成:student_id,chinese_score,math_score,english_s...工作几年,越来越发现行列转换非常重要,为了和上篇文章(hive函数--排序row_number,rank over)保持一致,这次继续用学生成绩的例子吧。
1.行转列 union all:
表result:student_id,class,score
学生的语数外物化都在一张表里,每个学生对应有五行数据,如何变成:
student_id,chinese_score,math_score,english_score,physics_score,chemical_score,这样一行显示五列的结构呢?其实非常简单,用union all 即可。注意下面的语句,其实是有些小技巧在里面的:
select student_id,max(chinese_score),max(math_score)math_score ,max(english_score)english_score,max(physics_score)physics_score,
max(chemical_score)chemical_score from(
select student_id,score chinese_score,0 math_score,0 english_score,0 physics_score, 0 chemical_score from result where class="语文"
union all
select student_id,0 chinese_score,score math_score,0 english_score,0 physics_score, 0 chemical_score from result where class="数学"
union all
select student_id,0 chinese_score,0 math_score,score english_score,0 physics_score, 0 chemical_score from result where class="英语"
union all
select student_id,0 chinese_score,0 math_score,0 english_score,score physics_score, 0 chemical_score from result where class="物理"
union all
select student_id,0 chinese_score,0 math_score,0 english_score,0 physics_score, score chemical_score from result where class="化学"
)a
group by student_id
注意:
1)union all 需要所有union的数据列名一致,所以所有的数据都有五列。
2)虽然所有的数据都有五列,但是实际有数据的只有一列,其余数据以0补齐
3)最后结果出来的时候,要用max函数来取出实际的score。
4)实际处理数据的过程当中,可能存在并不是每个学生五门成绩都有的情况,而有的学生可能就是考了0分,这时候想要知道到底是没有成绩还是成绩为0的话,可以设默认值为-1(看情况自己决定,不冲突即可,string类型的数据可以设null哦)然后再取max,就可以区分了。
其实就是根据限制条件取出不同的数据放到不同列中,其余数据以默认值补齐,最后取max即可
2.一行转多行 lateral view explode()
实际的日志为了传输方便,很可能将很多数据放在一条记录里,如果表变成了这样:
result:
student_id score_list 1 语文-90;数学-100;英语-100;物理-98;化学-99 想要把合在一起的数据拆成5行能够看的清晰一点又该怎么样呢?
注意,我之前遇到过平台不支持分号的情况,这里可以用\074来代替。
select student_id,split(scores,"-")[0] class ,split(scores,"-")[1] score
from result a lateral view explode(split(score_list,"\074")) scores as scores
这个后面的as就是语法,还有explode里面的得是一个数组
这样就会产生5条记录了,如果想分别用五列展示的话,用上面的union all就好啦
split函数功能:按照后面的分隔符分解前面的字符串
3.多行转一行group_concat
与上述问题相反,如果有5行数据想要合并成上述一列数据该如何操作呢?
select student_id,group_concat(concat(class,"-",score),"\074") from result group by student_id
concat:字符串拼接,直接按顺序来
group_concat:一看名字就知道和group有关,使用的时候得和group一起使用,按student_id分组之后,将分组的内容以;连接成一个字符串。
-
Excel教程中Small和Column函数配合实现排序
2016-03-04 15:08:20在前面教程讲过一些使用RANK函数和“数据/排序”菜单来实现excel教程中的排序... 其中A到E列为原始数据,如何将A1至E8区域的数据,让每行的数据按照从小到大的顺序重新排序? excel教程数据排序的操作步骤是这样在前面教程讲过一些使用RANK函数和“数据/排序”菜单来实现excel教程中的排序操作。使用排序的方法通常只能解决一行或一列数字的排序。
如果是多行或多列区域数据排序,可以参考下面的方法来实现。
下面我们以一个实例加以讲解。详见下图。
其中A到E列为原始数据,如何将A1至E8区域的数据,让每行的数据按照从小到大的顺序重新排序?
excel教程数据排序的操作步骤是这样的:
单击G1单元格,在编辑栏输入公式:=SMALL($A1:$E1,COLUMN(A1)),确定。并再次选中G1单元格,向右复制至K1单元格。然后再选中G1:K1单元格区域,向下复制公式至K8单元格结束。
通过公式的形式,即可完成数据从小到大的排序。注:如果是将数据按照从大到小来排序,只需将SMALL变为LARGE即可。
完成排序操作后,也可以根据实际需要隐藏原数据列A:E区域;也可以将G:K列的数据复制后,进行选择性粘贴-数值,覆盖原始数据列。
对excel感兴趣的朋友可加Excel学习交流群:284029260
Excel排序关联阅读文章:
《excel 教程列排序实例讲解》
《excel 教程排名函数公式讲解》 -
如何玩转sortablejs-vuedraggable实现表单嵌套拖拽功能
2020-02-10 23:27:13最近几天在研究有关vue实现拖拽的功能,不过跟一般的拖拽排序有点不同,这个需求可能出现多行多列嵌套的表单元素,数据也是递归形式的出现。我也是在vuedraggable的基础上扩展实现的,如何想了解更多的拖拽排序功能...最近几天在研究有关vue实现拖拽的功能,不过跟一般的拖拽排序有点不同,这个需求可能出现多行多列嵌套的表单元素,数据也是递归形式的出现。我也是在vuedraggable的基础上扩展实现的,如何想了解更多的拖拽排序功能可以参考https://sortablejs.github.io/Vue.Draggable/#/simple
需要实现的功能
- 表单元素可能出现嵌套,数据出现树形结构
- 实现拖拽功能,表单元素可以移动到空的列里面,但是表单元素内容的不能来回拖拽排序
- 行与行之间可以拖动排序,列与列直接不能移动排序,能移动的只是字段数据也就是表单元素
- 右边列表里的字段可以拖拽添加到左边的空白没内容的列里面
用的技术点
- vue组件递归实现
- vuedraggable拖拽排序
- vuedraggable的例子Functional third party,主要是元素移动
- vuedraggable实现拖拽复制功能
- vuetify :vue ui组件,这里面主要用了它的删格系统和vcard卡片
实现功能的部分代码
Drag组件也是要递归的组件代码
<template> <draggable v-model="datas" tag="v-layout" class="row wrap fill-height align-center sortable-list" style="background: grey;" > <v-flex v-for="row in datas" :key="row.index" class="sorttable" xs12 my-2 style="background: red" > <div class="row wrap justify-space-around"> <v-flex v-for="item in row.items" :key="item.id" xs4 pa-3 class="row-v" > <!-- 加判断如果item存在rows数组,则递归继续执行这个组件--> <template v-if="item.rows && Array.isArray(item.rows)"> <drag :data="item.rows" /> </template> <draggable v-else :list="item.data" tag="div" :group="{ name: 'row'}" :move="getData" :animation="100" :empty-insert-threshold="60" @change="log" > <v-card v-for="item2 in item.data" :key="item2.title" style="height: 100px;" > {{ item2.title }} </v-card> </draggable> </v-flex> </div> </v-flex> </draggable> </template> <script> import draggable from 'vuedraggable' import Vue from 'vue' import Vuetify from 'vuetify' import 'vuetify/dist/vuetify.min.css' Vue.use(Vuetify) export default { name: 'Drag', order: 17, components: { draggable }, props: { data: { type: Array, default () { return [] } } }, data () { return { datas: this.data, controlOnStart: true } }, methods: { // 限制移动的方法 getData (e, d) { if (e.relatedContext.list.length > 0) { return false } }, log: function (evt) { // window.console.log(evt) // console.log(this.data) if (Object.keys(evt)[0] === 'added') { this.arrLoop(this.data, evt.added.element) } }, addHandler (e, d) { // console.log(e) }, endHandler (e, b) { console.log(b) }, // 递归实现遍历数据 arrLoop (arr, ele) { arr.forEach(item => { const itemArr = item.data if (itemArr && itemArr.length > 1) { for (let i = 0; i < itemArr.length; i++) { if (itemArr[i].title === ele.title) { itemArr.splice(i, 1) } } } if (item.items && item.items.length) { this.arrLoop(item.items, ele) } }) } } } </script> <style> .buttons { margin-top: 35px; } .row-v { /* height: 150px; width: 200px; */ width: 33%; height: 100px; display: inline-block; background: blue; border: 1px solid #ebebeb; } .row { margin-left: 0; margin-right: 0; } .ghost { opacity: 0.5; background: #c8ebfb; } </style>
注意:实现递归一定定义Drag组件的name值,要不就容易报错
emptyInsertThreshold:拖动时,鼠标必须与空的可排序对象之间的距离(以像素为单位),以便将拖动元素插入到该可排序对象中。默认为5。设置为0禁用此功能。这个参数要适当的设置,如果是默认值,当列为空的时候,很难把元素拖进去,这个也是一个比较难解决的点,因为需要把右边字段元素拖动到左边空列中,或者左边的元素移动到空的列里。
move对应方法getData的方法主要实现如果relatedContext.list.length 大于0,则取消移动功能。
Drag的数据:rows: [ { index: 1, items: [ { id: 1, data: [{ title: 'item 1' }] }, { id: 11, data: [{ title: 'item 11' }] }, { id: 12, data: [ ] } ] }, { index: 2, items: [ { id: 0, rows: [ { index: 1, items: [ { id: 2, data: [{ title: 'item 211' }] }, { id: 3, data: [{ title: 'item 212' }] } ] }, { index: 2, items: [ { id: 4, data: [ { title: 'item 222' } ] } ] } ] }, { id: 5, data: [{ title: 'item 3' }] } ] }, { index: 3, items: [ { id: 6, data: [{ title: 'item 4' }] }, { id: 7, data: [{ title: 'item 5' }] }, { id: 8, data: [] } ] } ]
右边列表的组件代码:
<template> <div> <div v-for="item in datas" :key="item.id" class="item-box" > <h2>{{ item.title }}</h2> <div class="item-con"> <draggable class="dragArea list-group" :list="item.items" :group="{ name: 'row', pull: 'clone', put: false }" :clone="cloneDog" > <span v-for="item2 in item.items" :key="item2.id" > {{ item2.title }} </span> </draggable> </div> </div> </div> </template> <script> import draggable from 'vuedraggable' export default { name: 'Drag', components: { draggable }, props: { data: { type: Array, default () { return [] } } }, data () { return { datas: [ { id: 1, title: '标题1', items: [ { id: 11, title: 'item 11' }, { id: 12, title: 'item 12' } ] }, { id: 2, title: '标题2', items: [ { id: 21, title: 'item 21' }, { id: 22, title: 'item 22' } ] } ] } }, methods: { cloneDog (ele) { // console.log(ele) let b = this.arrLoop(this.rows, ele) if (!b) { return ele } }, arrLoop (arr, ele) { for (let i = 0; i < arr.length; i++) { if (arr[i].id === ele.id) { return true } if (arr[i].items && arr[i].items.length) { return this.arrLoop(arr[i].items, ele) } } } } } </script> <style lang="scss" scoped> .list-group{ span { display: inline-block; padding: 0 12px; border-radius: 4px; border: 1px solid #ebebeb; line-height: 32px; height: 32px; background: #f5f5f5; margin-right: 15px; } } </style>
clone的cloneDog方法实现复制功能,首先递归循环数据判断是需要复制的元素在左边的列表中是否存在,若是存在,则取消复制,不存在,则复制。
效果如下图:
总结
这篇文章分享的主要技术点就是vuedraggable拖拽排序和复制、嵌套拖拽排序功能、vue组件递归功能。
-
SQL进阶之二:聚合与排序
2020-08-14 15:42:30本文重点是学习如何对多行数据进行汇总操作,以及如何对汇总结果进行升序、降序等。 文章目录1. 对表进行聚合查询1.1 聚合函数 1. 对表进行聚合查询 学习重点 使用聚合函数对表中的列进行计算合计或者平均值等的... -
第二课 检索数据
2018-03-23 17:37:00这一课介绍如何使用 SELECT 语句从表中检索一个或多个数据列。 2.1 select语句 注意一些关键词不可以作为表名称,比如: 2.2 检索单个列 select prod_name from products 1、SQL输出的没有排序 2、... -
Excel数据处理与分析实战技巧精粹 附书源码
2010-10-10 19:46:37技巧90 多行数据合并成一行 技巧91 行列区域直接转换 技巧92 多行多列数据转为单列数据 技巧93 单列数据转为多行多列数据 技巧94 数据区域的复杂转换 第11章 排序 技巧95 包含标题的数据表排序 技巧96... -
动态表单 mysql_【mysql】动态表单应该如何设计数据库?
2021-02-05 06:46:18需求是这样的在后台管理界面录入表单信息,规定有哪些表单 (可以增删)在前端显示哪些表单的可以填写最后把填写的表单(产生的真实数据)存入数据库最后填入的数据需要能够方便查询,排序,过滤的数据我在网上找了挺多... -
mysql里如何取每个班级成绩前十的学生_mysql获取某个班级学习成绩的前几名
2021-01-20 01:00:10在通过学生唯一字段获取学生信息需要用到mysql下面几个函数GROUP_CONCAT 可以把结果集中的多行中特定数据显示成一列数据FIND_IN_SET 可以查看字串序列list(多个字串用逗号分隔)是否包含字串str 可以通过BETWEEN AND... -
JS应用
2019-08-27 11:41:58js中如何对数组中的数据进行排序 arrayObject.sort(function(first,second) { //在这里对比大小返回数值 }):数组排序 js中如何调用正则表达式 var patt = /表达式/flag ;(建议使用) flag说明:flag为字符类型... -
Excel公式大全操作应用实例(史上最全)
2018-03-06 21:09:38对带有单位的数据如何进行求和 对a列动态求和 动态求和公式 列的跳跃求和 有规律的隔行求和 如何实现奇数行或偶数行求和 单数行求和统计偶数单元格合计数值 隔行求和公式设置 隔列将相同项目进行求和 隔行或隔列加总... -
C++程序设计 第8周 编程题1# list
2018-01-17 11:06:561. OpenJudge上老师提供的测试数据一共有20万多行,一开始只想着复制粘贴到控制台黑框中,结果电脑内存不够导致粘贴过去的数据不完整。网上搜索“如何输入大量的测试数据”(可能是我的关键字不对),搜索出的结果都... -
C#编程经验技巧宝典
2008-06-01 08:59:33106 <br>0175 如何检索指定条件数组中的元素 107 <br>0176 如何动态改变数组长度 108 <br>0177 如何反转数组中元素的顺序 108 <br>0178 如何排序数组中的元素的顺序 109 <br>0179 如何创建... -
EXCEL函数公式集
2010-03-16 03:26:38对带有单位的数据如何进行求和 对a列动态求和 动态求和公式 列的跳跃求和 有规律的隔行求和 如何实现奇数行或偶数行求和 单数行求和统计偶数单元格合计数值 隔行求和公式设置 隔列将相同项目进行求和 隔行或隔列加总... -
【转】Confluence对表格的操作方法
2020-05-14 16:07:08当用户对页面进行浏览的时候,用户可以通过单击表格的头来对表格中的数据进行排序。 插入表格 要在页面中插入表格: 对页面进行编辑,将鼠标移动到你希望插入表格的地方。 在工具栏中选择 表格(Table)。 一个... -
C++ : Online Judge 输入输出练习
2020-03-30 02:29:308-10、字符串排序(1-3) 相关文章:OJ编程题教训 相关题目:牛客网OJ在线编程常见输入输出练习场 注意如何理解 while ( cin>>n ) : “读入不定多行” cin 是标准输入流对象,即istream类的对象,其从标准... -
bootstrap-table:一个扩展表,用于与一些最广泛使用CSS框架集成。 (支持Bootstrap,语义UI,布尔玛,材质...
2021-01-29 21:00:11单行或多行选择 强大的分页 卡视图 详细视图 本土化 扩展名 如何获得 说明书下载 使用“或。 凉亭 bower install bootstrap-table Npm npm install bootstrap-table CDN 您可以直接从CDN(例如或或引导表。 贡献 ... -
尹成Python27天入门到项目实战
2020-12-05 17:04:22数据分类与list深入地区分类详解字典分类器数据简单归并数据如何切割数据加密数据解密指令执行判断文件夹编程小结列表归并-删除列表归并-下标小结与作业day14down 面向对象编程与深浅拷贝面向对象与... -
wxPython学习手册
2014-04-19 08:01:589.5.3 如何在数据被键入时验证数据? 287 9.6 本章小结 290 10、创建和使用wxPython菜单 292 10.1 创建菜单 292 10.1.1 如何创建一个菜单栏并把它附加到一个框架? 293 10.1.2 如何创建一个菜单并把它附加到菜单栏?... -
delphi 开发经验技巧宝典源码
2010-08-12 16:47:230041 如何实现数据加密与解密算法 27 0042 如何继承父类的方法 27 0043 如何实现函数重载 28 0044 类中多态的应用 28 0045 将函数作为参数进行调用 30 2.3 参数与指针 30 0046 通过指针读写数据 30 ... -
C#开发实战1200例(第一卷+第二卷)+源码下载地址.txt
2019-05-17 09:24:24实例014 快速对多行代码进行注释 17 实例015 使用“///”标记给代码段添加说明 18 2.2 运算符的使用 20 实例016 使用引号运算符进行赋值 20 实例017 使用算术运算符开发简单计算器 21 实例018 使用... -
21天学通javascript(第2版)(顾宁燕) pdf扫描版
2014-09-26 12:40:117.4.11 数据排序—对数组元素进行排序 152 7.4.12 数据转换—将对象转换为本地字符串 154 7.5 小结 155 7.6 习题 155 第二篇 javascript对象篇 第8章 javascript面向对象基础 158 8.1 面向对象概念 158 8.1.1... -
C#开发实战1200例(第1卷).(清华出版.王小科.王军.扫描版).part1
2016-06-16 20:55:43实例244 对ListBox控件中的数据进行排序 实例245 在ListBox控件中查找指定项 实例246 将数据库数据添加到组合框中 实例247 在ListBox控件间交换数据 实例248 借助绑定控件实现数据选择录入 11.6 ListView控件... -
C#开发实战1200例(第1卷).(清华出版.王小科.王军.扫描版).part2
2016-06-16 20:59:52实例244 对ListBox控件中的数据进行排序 实例245 在ListBox控件中查找指定项 实例246 将数据库数据添加到组合框中 实例247 在ListBox控件间交换数据 实例248 借助绑定控件实现数据选择录入 11.6 ListView控件... -
C#开发实战1200例(第1卷).(清华出版.王小科.王军.扫描版).part3
2016-06-16 21:02:21实例244 对ListBox控件中的数据进行排序 实例245 在ListBox控件中查找指定项 实例246 将数据库数据添加到组合框中 实例247 在ListBox控件间交换数据 实例248 借助绑定控件实现数据选择录入 11.6 ListView控件... -
C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载
2018-02-20 01:26:55全书分6篇共25章,主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows... -
ExtJS源码分析与开发实例宝典(附光盘源码) PDF扫描版
2014-09-24 23:40:0514.3.2 多行文本输入组件 441 14.3.3 文本编辑组件 442 14.4 选择组件 447 14.4.1 单个选择组件 447 14.4.2 选择组 448 14.5 下拉组件 452 14.5.1 TriggerField 452 14.5.2 Combox 454 14.5.3 多选组件扩展... -
asp.net知识库
2015-06-18 08:45:45如何获取MSSQLServer,Oracel,Access中的数据字典信息 C#中利用GetOleDbSchemaTable获取数据库内表信息[原创] 如何解决ACCESS中SELECT TOP语句竟然返回多条记录的问题? Asp.net 利用OleDb的GetOLEDBSchemaTable方法... -
Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--详细书签版
2013-02-04 12:43:52RIYAJ SHAMSUDEEN 专注于性能/数据恢复/电子商务的咨询公司OraInternals的首席数据库管理员和董事长。有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能...
-
pcl交互式ICP
-
JAVA入门01
-
易意-源码
-
常用的分布式事务解决方案
-
金三银四,冰河为你整理了这份20万字134页的面试圣经!!
-
分布式存储系统中的异构感知数据再生
-
RapidScada从入门到精通
-
java 多线程
-
龙芯实训平台应用实战(希云)
-
Mycat 实现 MySQL的分库分表、读写分离、主从切换
-
leetcode 203. 移除链表元素
-
Mac启动Eclipse提示Failed to create the Java Virtual Machine
-
linux基础入门和项目实战部署系列课程
-
Session的使用
-
自动化测试Python3+Selenium3+Unittest
-
mpsoc zcu104 上做hdmi 显示实验
-
Java 类和对象
-
MMM 集群部署实现 MySQL 高可用和读写分离
-
MaxScale 实现 MySQL 读写分离与负载均衡
-
基于Flink+Hudi构建企业亿级云上实时数据湖教程(PC、移动、小