本文主要介绍MySQL数据分组的相关信息,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解一下。
创建分组
分组是在SELECT语句的GROUP BY子句中建立的。
示例:
SELECT vend_id,COUNT(*)AS num _ prods FROM products GROUP BY vend _ id;
分组依据
group子句可以包含任意数量的列,这使得可以嵌套组并对数据分组提供更详细的控制。
如果GROUP BY子句中嵌套了分组,则数据将在最后指定的分组商户中汇总。换句话说,当建立分组时,所有指定的列一起计算。(不能从单个列中检索所有数据)。
group子句中列出的每一列都必须是检索列或有效表达式(但不是聚合函数)。如果在SELECT中使用了表达式,则必须在GROUP BY子句中指定相同的表达式,并且不能使用别名。
除了聚合计算语句之外,SELECT语句中的每一列都必须在GROUP BY子句中给出。
如果分组列中有NULL值,NULL将作为分组返回。如果列中有多行空值,它们将被分组。
GROUP BY子句必须出现在WHERE子句之后和ORDER BY子句之前。
过滤器分组
如果您希望列出至少有两个订单的所有骨科科室,则必须根据完整的分组而不是单个行来筛选此类数据。
你可以用HAVING。
SELECT cust_id,COUNT(*)AS orders FROM orders GROUP BY cust _ id COUNT(*)=2。
HAVING和WHERE的区别在于,WHERE在分组前筛选数据,而HAVING在分组后筛选数据。当然,两个也可以出现在同一个语句中。
列出有两种或两种以上价格为10英镑或以上产品的供应商。
SELECT vend_id,COUNT(*)作为num _ prods FROM products WHERE prod _ price=10 GROUP BY vend _ id with COUNT(*)=2。
列出有两种顶级产品的供应商。
SELECT vend_id,COUNT(*)作为num _ prods FROM products GROUP BY vend _ id COUNT(*)=2。
分组和排序
以.排序
分组依据
排序生成的输出
线路分组。但是输出可能不按照分组的顺序。
可以使用任何列(也可以使用未选择的列)
只能使用选择列或表达式列,并且必须使用每个选择列表达式。
不一定。
如果将列(表达式)与聚合函数一起使用,则必须使用
检索订单总价大于或等于50的订单的订单号和订单总价。
SELECT order_num,SUM(quantity*item)作为order total FROM orderitems GROUP BY order _ num具有SUM(quantity*item_price)=50。
如果输出按订单总价排序
SELECT order_num,SUM(quantity * item_price)作为ORDER total FROM orderitems GROUP BY ORDER _ num具有SUM(quantity * item _ price)=50 ORDER BY ORDER total。
SELECT子句的顺序
条款
解释
有必要用吗?
挑选
要返回的列或表达式。
是
从
从中检索数据的表。
仅在从表中选择数据时使用。
分组依据
分组描述
仅在按组计算聚合时使用。
在哪里
行过滤
不
拥有
分组过滤
不
以.排序
输出排序顺序
不
限制
要检索的行数
不
以上是MySQL数据分组的详细内容。关于MySQL数据分组的更多信息,请关注我们的其他相关文章!