sql语句中啥啥要用到group bygroup by啥根据啥分组的
这个group by的问题,我之前也纠结很久,觉得别人怎么说我都无法真正理解,最后是老板的老板花了2个下班时间帮我讲通的,惭愧。。。
首先,可以跳出group by这个具体语句的角度思考,而去思考发明这个语句要解决的问题。
假设有这样一张表,列举了每个小朋友今天吃的水果。
现在,我想知道每个小朋友今天吃了几个水果?那我最后想要的,就是这种结果
如果手动数数,你会怎么数呢?我会先在姓名里面找“花花”,然后数一数有几行,有几行就代表她吃了几个水果,再数“泡泡”的行数,以此类推。这其实就是在分组数行数,用SQL语句表达,就是
select 姓名,count(*)
from table
group by 姓名
那如果是想知道,每个小朋友今天吃了几种水果呢?这时候就需要不重样地去数水果,也就是说,除了按姓名分组,还要看水果的种类,而不是简单的行数。在数到“泡泡”的时候,我们就看到她其实是吃了两个橙子,水果种类只有一种,用SQL语句表达,就是
select 姓名,count(distinct 水果)
from table
group by 姓名
■网友
比如一个 姓名 科目 成绩 表:group by 姓名 就可以为每个学生列出其各科成绩group by 科目 可以为按科目列出学生成绩,或者在前面的select语句里计算单科平均分等group by 成绩 可以按分数为学生分类(假如成绩是5分制的话)
■网友
主要用于汇总数据,比如计算平均值、最大最小值、技术以及累计值等等,而group by 后面的关键字就是分钟字段,表示你用什么字段进行汇总。比如,select max(score) as maxscore from table group by class,表示:表中数据按照“班级(class)”进行汇总,求出每个班级的汇总结果,这里计算的是每个班级的最高分数。
■网友
【sql语句中啥啥要用到group bygroup by啥根据啥分组的】 借用一下 @柚子苏苏 的小朋友例子,group by 姓名,其实是指我现在要按姓名为标杆将这个表分类了,换句话说就是我现在看姓名这列,姓名一样的就是一个小组,按这样划分,整个表将分为几个小组,分完后现在我要计算每个小朋友吃的水果数量,这里用到聚集函数count(),我已经按姓名分类了,每个姓名所对应的水果数就可以通过count函数算出来了。
■网友
一张收入表,张三有五条记录,李四有三条记录,你想求他们收入的总和,就要sum,然后group by姓名,group by的意思就是按照你规定的字段来分组,多实际操作,IT技能和学校的某些学科的学习方法不一样,先上手操作,然后再想为什么。
■网友
GROUP BY 语句根据一个或多个字段对结果集进行分组(也就是把值相同放到一个组中,显示组中一条记录),实现对每个组而不是对整个结果集统计。比如要统计每个部门人数。
根据需要分组,比如要统计部门人数,就需要根据部门分组,看具体需求。
你可以看一下
group by分组查询用法
推荐阅读
- 某些公司招聘要求中的精通mysql是啥程度
- 学习啥编程语言比较有前途
- MapReduce引擎太慢,Impala,Presto诞生了,牺牲稳定性来换SQL任务的快速处理值吗
- mysql myisam引擎,插入unique数据用不满cpu等硬件是啥原因
- 大家在写sql时用leftjoin这种关联吗 尤其对大数据量网站前台sql 你们咋取这种关联的数据
- 为啥mysql安装后,占磁盘空间比Oracle、SqlServer小这么多
- mysql 导入 很大的 CSV ?
- 有哪些网站的生产环境使用了mongodb,或其它nosql数据库
- 程序零基础,想去创业做网站,应该学习前端还是php啊(网站打算用php+mysql)
- 对爬虫抓取的数据进行分析该用MySQL还是mogodb
