mysql中按照日期分组查询数量

mysql中按照日期分组查询数量,第1张

SELECT DATE_FORMAT(time,'%Y-%m-%d') as day, sum(case when amount>0 then amount when amount=0 then 0 end) as amount1

from table where time>='2014-11-01' group by day

我没有测试。time表示日期,amount表示数量。查询11月后每天成交数量

需要准备的工具:电脑,sql数据库。

1、首先新建一个test表,有id,name,second三个字段,其中name字段有重复数据。

2、输入“select name,max(second) from test group by name”语句,点击运行。

3、可以看到已经查询出按name分组后取出的second最大的一条记录。

4、以输入“select name,max(second) from test group by name order by max(second) desc”语句,按分组后second最大值进行降序。

5、如果想查询mysql分组后最小的一条记录,输入“select name,min(second) from test group by name”语句,点击运行即可。

如何分组数据,以便能汇总表内容的子集。这涉及两个新SELECT语句子句,分别是GROUP BY子句和HAVING子句。

分组允许把数据分为多个逻辑组,以便能对每个组进行聚集计算。

分组是在SELECT语句的GROUP BY 子句中建立的。

来看例子理解:

mysql>select vend_id,COUNT(*) AS num_prods from products group by vend_id

也就是不同的Id的商品总数都能分别查出来。

除了能用GROUP BY分组数据外,Mysql还允许过滤分组,规定包括哪些分组,排除哪些分组。

也就是HAVING子句。

mysql>select cust_id,COUNT( /) AS orders from orders <u>GROUP BY</u>cust_id <u>HAVING</u>COUNT( /) >=2

注意:这里HAVING换成WHERE是不管用的。HAVING针对于分组。

WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。

那么咱么看看怎么混合WHERE和HAVING。

mysql>select vend_id, COUNT( / ) AS num_prods from products <u>where prod_price>=10 group by</u>vend_id HAVING COUNT( /) >=2

mysql>select order_num,SUM(quantity*item_price) AS ordertotal

from orderitems

GROUP BY order_num

HAVING SUM(quantity*item_price) >=50

order by ordertotal


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7472788.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存