mysql中group by里面的问题标签:10,group,分组,mysql,DATE,2017,MY,having From: https://blog.51cto.com/yetaotao/5800743
GROUPBYdept,name的意思,就是先按dqpt分组,如果出现dept相同的,再按name分组,也就是说除非出现dept和name都相同的记录才会合为一组,否则的话是不会合在一起的,这样的话显示出的name就只有一个了。
你用现实生活中的例子来理解一下就很明白啦:比如说你们班上的同学如果按性别来分组,可以分为两组,如果按照姓名来分组,那就基本上有多少个同学就有多少组(除非有同名同姓的),那如果按性别和姓名同时分组呢,那分的组就是同学数的两倍了,即“男的张三”一组,“女的张三”一组,“男的李四”一组,“女的李四”一组……当然,这其中有一半的组是空的,剩下的也是每一组只有一个人啊!理解没有?
所以Groupby后面的分组字段不是随便加的,多个字段的分组是需要排列组合的,分的组数会按几何级数增长!
补充说一句:本来按名字来分组就是个愚不可及的想法了!更何况还要加上其他分组条件,这样的话基本上就是一组只有一个了!
更多追问追答
你mysql都会?
我前端、后台、美工等都会,还会架设服务器,总之一个网站从无到有的全过程我都可以独立完成(除了要拿螺丝刀的那种),此外我还可以独立开发软件、APP、微信小程序等等,厉害吧,哈哈
Linux也会
如何在mysql中group by week
以周一作为一周的开始,使用mysqlweek行数模式5:
作为周划分的标准,比如20170101是周天,week(20170101,5)=0,
分WEEK_IN_MONTH,和WEEK_IN_YEAR两种情况进行分组:
WEEK_IN_YEAR:
#bysleest2017/03/29按每个日期所在一年中的第几周分组汇总
SELECTWEEK(MY_DATE,5)+1ASWEEK_OF_YEAR,COUNT(1)ASCOUNT,
GROUP_CONCAT(MY_DATE)ASINCLUDE_DATE
FROM(SELECT'2017-01-01'ASMY_DATE
UNIONALL
SELECT'2017-02-08'
UNIONALL
SELECT'2017-02-03'
UNIONALL
SELECT'2017-02-01'
UNIONALL
SELECT'2017-01-21')TMP
GROUPBYWEEK(MY_DATE,5)+1;
WEEK_IN_MONTH:
#bysleest2017/03/29按每个日期所在每个月的第几周分组汇总
SELECTWEEK(MY_DATE,5)-WEEK(DATE_SUB(MY_DATE,INTERVALDAYOFMONTH(MY_DATE)-1DAY),5)+1ASWEEK_OF_MONTH,
COUNT(1)ASCOUNT,
GROUP_CONCAT(MY_DATE)ASINCLUDE_DATE
FROM(SELECT'2017-01-01'ASMY_DATE
UNIONALL
SELECT'2017-02-08'
UNIONALL
SELECT'2017-02-03'
UNIONALL
SELECT'2017-02-01'
UNIONALL
SELECT'2017-01-21')TMP
GROUPBYWEEK(MY_DATE,5)-WEEK(DATE_SUB(MY_DATE,INTERVALDAYOFMONTH(MY_DATE)-1DAY),5)+1
mysql group by怎么用
例子 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
语句目的是 相同名字的物品 一共有几行order by 是对表字段的排序
group by 是对表字段的分组
怎么会一样呢?
建议你应该好好学习mysql查询的基础才行。
mysql group by 的用法,集合后取出指定的字段
mysql group by 用法解析(详细)
星期三, 09/21/2011 - 14:33 — jason
group by 用法解析
group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。
SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。
某个员工信息表结构和数据如下:
id name dept salary edlevel hiredate
1 张三 开发部 2000 3 2009-10-11
2 李四 开发部 2500 3 2009-10-01
3 王五 设计部 2600 5 2010-10-02
4 王六 设计部 2300 4 2010-10-03
5 马七 设计部 2100 4 2010-10-06
6 赵八 销售部 3000 5 2010-10-05
7 钱九 销售部 3100 7 2010-10-07
8 孙十 销售部 3500 7 2010-10-06
例如,我想列出每个部门最高薪水的结果,sql语句如下:
SELECT DEPT, MAX(SALARY) AS MAXIMUM
FROM STAFF
GROUP BY DEPT
查询结果如下:
DEPT MAXIMUM
开发部 2500
设计部 2600
销售部 3500