当前位置 博文首页 > 文章内容

    group by,Group by的使用

    作者:zyd1113wz 栏目:网站相关 时间:2021-03-01 11:28:34

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



         Group by的使用

         对group by 的初步认识还是不很熟悉,在学习的项目中用了几次group by,今天早上一觉醒来看了一下,突然感觉group by好陌生,总有个筋转不过来,不过想了一会总有一点头绪,简单总结一下吧,group by我们可以先从字面上来理解,group表示分组,by后面写字段名,就表示根据哪个字段进行分组。

         下面用excel表格的做的说一下group by 的原理,好比说group by name,那么找就是找name那一列,如果是具有相同name值的行,就合并成一行,如对于name值为aa的话,那么【1 aa】与【2 aa】两行的aa的值是相同的那么就合并成1行,所有的id值写到一个单元格里面,这就是它的原理了。

         下面用一小案例实现来看一下它有什么特别之处吧,下面是工人的一张数据库表等下我就要规格将这些数据查询出做成一个表格数据,这个表格可以看到员工编号和所在的部门是什么以及是什么职位员工的工资多少,假如我想看处那层的工资比较多,又或者是那一段工资的人最多,那个部门哪个员工工资最高啊。原先的数据很难看那一阶段工资比较多,因为原先的数杂乱无章只按输入的循序显示很看那个工资最高啊那层的工资比较多,这时候我们就要用到分组了,工资高的放一组工资低的放一组,然后再由高工资排到低工资的这样的顺序排下来,这样读取出来的数据看上去就直观明了很多,一眼看去就知道了,让我们一步步来实现这个功能吧。

         一、视图

         首先就是搭建好页面,这个页面比较简单就不一一地讲了,说js代码吧先声明两个全局的变量第一个变量var tabEmployee用于存放员工信息表,第二变量var layer, layuiTable用于存放表格的。

         然后就是 $(function)加载事件,这里重点说一下拉框的数据的绑定吧,用createSelect封装的方法绑定部位下拉框的数据,有三个参数,第一个参数是form表单id,第二参数是查询下拉框的url,第三个参数是value 设置值,这里用前面两个就够了。

    createSelect("#searchDepartment", "selectDepartment");

         控制器查询数据

         List<T>是一个实现List接口反省集合,分开说的话List理解成一个集合,T就代表一个类型,T可以是任何类型,主要用于强制规范一个集合内存放的数据类型必须一致,这样避免了一些不必要的错误,还可以减少拆,装箱操作,提高程序的运行效率. 这个实体类SelectVo有两值一个选中值和显示值,从表中查询到ID放到里,查询到名字就放到text,把查询到的添加到这个列表中listDepartment,最后就是拼接请选择项,就是要说的第二实体类,就放到里重点总结一下下拉框用到的两个实体类。

    public ActionResult selectDepartment()

     {//查询数据

    List<SelectVo> listDepartment = (from tbDepartment in myModels.SYS_Department

    select new SelectVo

     {

     id = tbDepartment.DepartmentID,

     text = tbDepartment.DeoartmentName

    }).ToList();

     //拼接"请选择"项

     listDepartment = Common.Tools.SetSelectJson(listDepartment);

    return Json(listDepartment, JsonRequestBehavior.AllowGet);

     }

         二、控制器方法

         这里就重点代码了,就使用上面讲到group by代码了:

    语句描述:Linq使用group by分组按UserID用户ID查询出用户最高的工资信息。

    group by 分组语法:group tbEmployee by tbEmployee.UserID into tbEmployee。

    表示对tbEmployee按UserID字段进行分组,其结果命名为tbEmployee。

         一旦重新命名,tbEmployee的作用域就结束了,所以,最后select时,只能select tbEmployee,new出一个新的列表,将序列中的每个元素投影到新的列表中,这个key属性是返回进行分组的关键字段的值,EmployeeID=自定列表.按降序顺序对元素进行排序(表PW_Empolyee=> 表PW_Empolyee中的Salary)返回列表的第一个元素,如果序列中不包含任何元元素,则返回默认值. EmployeeID。其它同理,接下就多表联查排序按照它工资的进行降序的排序。

         最后运行得到结果如下图所示:

         原文链接:https://blog.csdn.net/weixin_44512123/article/details/91352988