zoukankan      html  css  js  c++  java
  • 关于mysql的初步学习 (四)

     继续深入学习下 group by的使用:

      它的语法是

        select

                column_name1,column_name2,。。。,function(column_name)

         from

                table_name

         where

                column_name operator valuue

        group by

               column_name1,column_name2,。。。

       

       比如说:求一个班上的男女各多少人,并且有哪些人,上面的就都用得着:

        select 性别,group_concat(人名),count(人名) from 表 group by sex;

        如下图所示一样:

         select count(*),CarTypeID,group_concat(LicencePlate)from carinfotb_common  group by CarTypeID;

                       

         我是这么想的:

      1、Group by按照某一个column_name分组 ,那么 查询的列就肯定会包含这个column_name,function函数可以是某一个column_name 也可以是 “*”。但是要注意区别:

                                      count(*)对行的数目进行计算,包含NULL
                                      count(column)对特定的列的值具有的行数进行计算,不包含NULL值。
                                      count()还有一种使用方式,count(1)这个用法和count(*)的结果是一样的。

       2、 函数可以包含 count,sum,avg等这些数值运算。

                                         

       3、也可使用group_concat(column_name,。。。)函数,他可以把你分组里面所查的column_name值以‘,’连接起来,得到一个字符串。

       4、也可以使用order by 进行排序。

    select count(*),CarTypeID,group_concat(LicencePlate)from carinfotb_common group by CarTypeID ORDER BY COUNT(*) DESC;

           

       5、也可以使用 where 和having查询筛选数据

                      select count(*),CarTypeID,group_concat(LicencePlate)from carinfotb_common WHERE CarTypeID !='' group by CarTypeID ORDER BY COUNT(*) DESC;

    • where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
    • having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

                   select count(*),CarTypeID,group_concat(LicencePlate)from carinfotb_common WHERE CarTypeID !='' group by CarTypeID having count(*) > 10 ORDER BY COUNT(*) DESC;

       6、group by 可以是多个column_name 。那分组的条件是多个column_name之间的彼此联系。

     关键是搞起需求的意图,弄清楚分组的列,运用好函数。  参考文章:http://blog.csdn.net/xxpyeippx/article/details/8059910写的更详细。运用了多个列分组。 

    详细的数据查询结果不是很清晰

  • 相关阅读:
    sqlite数据库如何远程连接?
    redis的两种持久化方案
    Netty入门系列(1) --使用Netty搭建服务端和客户端
    使用MQ消息队列的优缺点
    Netty基础系列(3) --彻底理解NIO
    Netty基础系列(2) --彻底理解阻塞非阻塞与同步异步的区别
    Netty基础系列(1) --linux网路I/O模型
    Jedis异常解决:NOAUTH Authentication required
    java并发编程(2) --Synchronized与Volatile区别
    java并发编程(1) --并发基础及其锁的原理
  • 原文地址:https://www.cnblogs.com/doui/p/6775254.html
Copyright © 2011-2022 走看看