MySQL数据库系列学习三分组和

分组和聚合函数sql经典例子

1.查询本店价比市场价省钱,并且要求省钱元以上的取出来:

selectgoods_id,market_price,shop_price,(market_price-shop_price)ascount_pricefromgoodswhere(market_price-shop_price);

2.查询部门人数,最高工资,最低工资,平均工资,工资总和:

selectcount(*)as"部门人数",max(salary)as"最高工资",min(salary)as"最低工资",avg(salary)"平均工资",sum(salary)"工资总和"fromemp\G;

3.以dept_Id分组查询:

select*fromempgroupbydept_id;

4.查询以dept_id分组后,每组的记录数,和dept_id:

selectdept_id,count(*)fromempgroupbydept_id;

5.使用withrollup后,把每组的统计数再次统计总和:

selectdept_id,count(*)astotalfromempgroupbydept_idwithrollup;

select*fromempgroupbydept_idhavingcount(*)3;

selectdept_id,count(*)astotalfromempgroupbydept_idhavingcount(*)3;

select*,count(*)astotalfromempgroupbydept_idhavingcount(*)3;

selectdept_id,count(*)as"部门人数",min(salary)"最低工资",max(salary)"最高工资",avg(salary)"平均工资"

fromempgroupbydept_idhavingavg(salary)00;

mysqlselectdept_id,count(*)as"部门人数",min(salary)"最低工资",max(salary)"最高工资",avg(salary)"平均工资"fromempgroupbydept_idhavingavg(salary)orderbydept_iddesc;

fromempgroupbydept_idhavingavg(salary)orderbydept_iddesclimit1,1;

insetintoresult(name,subject,score)values

(‘张三’,‘数学’,90),(‘张三’,‘语文’,50),(‘张三’,‘地理’,40),

(‘李四,‘语文’,55),(‘李四’,‘政治’,45),

(‘王五’,‘政治’,30),

(‘赵六’,‘语文’,),(‘赵六’,‘数学’,99),(‘赵六’,‘品德’,98),

题目:查询出挂科2门以及2门以上的学员的平均分:

方案一:逆向思维,先查出所有人的平均分,然后再筛选

第一步:查询所有人的平均分。

第二部:计算出每个人的挂科情况,通过g标志处挂科结果

第三部:挂科数目就是g的sum结果

第四部:每个人的平均分以及挂科数已经算出,再having筛选一下即可得出最终结果:

方案二:先找出谁的挂科数=2,找到这些人再求这些人的平均分:

第一步:找出谁挂科了:

查出来的结果可以当成表来看:

mysqlselect*fromemporderbyrand()limit3;

查询所有字段和不重复的dept_id的总数:

select*,count(distinct(dept_id))fromemp;

查询不重复的empname:

selectdistinct(empname)fromemp;

mysqlselect*fromemp;

mysqlselectdistinct*fromemp;









































北京的哪个医院治白癜风好
白癜风的早期症状



转载请注明:http://www.xcqg58.com/xxzl/4368.html