mysql怎么把group
groupby语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。
SELECT子句中的列名必须为分组列或列函数。列函数对于GROUPBY子句定义的每个组各返回一个结果。
mysql中group by里面的问题
GROUPBYdept,name的意思,就是先按dqpt分组,如果出现dept相同的,再按name分组,也就是说除非出现dept和name都相同的记录才会合为一组,否则的话是不会合在一起的,这样的话显示出的name就只有一个了。
你用现实生活中的例子来理解一下就很明白啦:比如说你们班上的同学如果按性别来分组,可以分为两组,如果按照姓名来分组,那就基本上有多少个同学就有多少组(除非有同名同姓的),那如果按性别和姓名同时分组呢,那分的组就是同学数的两倍了,即“男的张三”一组,“女的张三”一组,“男的李四”一组,“女的李四”一组……当然,这其中有一半的组是空的,剩下的也是每一组只有一个人啊!理解没有?
所以Groupby后面的分组字段不是随便加的,多个字段的分组是需要排列组合的,分的组数会按几何级数增长!
补充说一句:本来按名字来分组就是个愚不可及的想法了!更何况还要加上其他分组条件,这样的话基本上就是一组只有一个了!
更多追问追答
你mysql都会?
我前端、后台、美工等都会,还会架设服务器,总之一个网站从无到有的全过程我都可以独立完成(除了要拿螺丝刀的那种),此外我还可以独立开发软件、APP、微信小程序等等,厉害吧,哈哈
Linux也会
如何对mysql的group
例子 aa表ab
12310
12312
123411
123414
首先 group 是用来分组的 不是过滤重复项的。重复项删除语句 DISTINCT用这个 。 select DISTINCT(a) from aa
结果就是a
123
1234
group by用来分组的
select a, sum(b) from aa group by a
sum意思是总和。结果就是
ab
12322
123425
语句的目的是以a为目标 需要知道 相同名字的物品在b列一共有多少数量总和
select a,count(b) from aa group by a
count 意思行数总和结果就是
ab
1232
12342
语句目的是 相同名字的物品 一共有几行易客crm之前的版本中有一个报表是按月统计销售情况,最近有个客户想按周统计销售情况。按月统计的sql语句比较好写,sql语句如下:
select date_format(ec_salesorder.duedate,’%y-%m’) as m, sum(ec_salesorder.total) as total, count(*) as so_count from ec_salesorder group by m order by m,也就是把duedate日期以月的形式显示,然后groupby,那么按周如何统计呢?
搜了一下mysql的manual,在这里找到一个解决方法,通过mysql的week函数来做,sql语句如下:select week(ec_salesorder.duedate) as m, sum(ec_salesorder.total) as total, count(*) as so_count from ec_salesorder group by m order by m,这个方法有个缺陷,不能显示年份,仅仅靠一个周数不方便查看统计信息。
继续研究mysql manual,在date_format函数介绍发现2个格式符和周有点关系:
%x year for the week where sunday is the first day of the week, numeric, four digits; used with %v
%x year for the week, where monday is the first day of the week, numeric, four digits; used with %v
把上面的sql语句中改成:
select date_format(ec_salesorder.duedate,’%x %v’) as m, sum(ec_salesorder.total) as total, count(*) as so_count from ec_salesorder group by m order by m
显示的结果如下:
m total so_count
2009 11 10000.00 3
2009 12 44000.00 5
如果周日为一周的第一天,那么sql语句应该为:
select date_format(ec_salesorder.duedate,’%x %v’) as m, sum(ec_salesorder.total) as total, count(*) as so_count from ec_salesorder group by m order by m
结果应该没错,不出意外,易客crm下个版本将增加按周统计销售情况的报表。
求解MYSQL中GROUP BY的用法
SELECT col1, SUM(CASE WHEN col2 = 'X' then 1 else 0 end),标签:语句,总结,group,salesorder,count,ec,mysqlgroupby,分组,total From: https://blog.51cto.com/yetaotao/5800740
SUM(CASE WHEN col2 = 'Y' then 1 else 0 end)
from表1
group by col1
即可。比如/* 12、查询score表中至少有5名学生选修的并以3开头的课程的平均分数。*/
select cno,avg(degree) from score
group by cno having cno like '3%' and count(*) >= 5