mysql 按条件统计总量

统计每周统计数据总数

sql:

SELECT
	count(*) as total,
	SUM(if(str_to_date(时间字段, '%Y-%m-%d')> '2018-12-02' and str_to_date(时间字段, '%Y-%m-%d')< '2018-12-10',1,0)) '第一周',
	SUM(if(str_to_date(时间字段, '%Y-%m-%d')> '2018-12-09' and str_to_date(时间字段, '%Y-%m-%d')< '2018-12-17',1,0) )'第二周'
from 表名

 

### 使用 MySQL 子查询进行计数统计MySQL 中,子查询可以嵌套于 `SELECT`、`INSERT`、`UPDATE` 或 `DELETE` 语句中,并能与多种运符一同工作。为了实现基于特定条件的记录数统计,通常会采用如下结构: #### 基本语法模式 当目标是从某张表中筛选出满足一定条件的数据并计其总数时,可以通过内外两层查询完成此任务。外层负责最终的结果汇总,而内层则专注于数据的选择。 对于具体的计数需求,可利用 `COUNT(*)` 函数配合子查询达成目的。下面给出了一种典型的应用场景实例,即先通过内部查询定位到符合条件的具体条目集合,再由外部查询对该集合作总量上的评估。 ```sql SELECT COUNT(*) FROM ( SELECT * FROM orders WHERE status = 'shipped' ) AS shipped_orders; ``` 上述 SQL 片段展示了如何构建一个用于统计已发货订单数目 (`status='shipped'`) 的查询表达式[^1]。这里的关键在于理解子查询作为临时表格的角色,在此基础上应用聚集函数来进行进一步的操作。 另外一种常见情况涉及跨多张关联表的信息检索和聚合处理。比如想要知道购买了指定产品 ID(`prod_id='RGAN01'`) 的客户人数,则可通过连接顾客信息表(customer) 和订单详情表(orderitems),并通过子查询限定所需的产品范围之后实施去重后的用户ID计数: ```sql SELECT COUNT(DISTINCT customer_id) FROM customers c JOIN orderitems oi ON c.customer_id = oi.customer_id WHERE oi.prod_id IN (SELECT prod_id FROM products WHERE product_name LIKE '%specific_product%'); ``` 这段代码片段说明了更复杂的业务逻辑下怎样运用子查询来获取精确统计数据的方法[^2]。值得注意的是,这里的 `IN` 运符用来接收来自另一个查询产生的结果列表,从而实现了间接性的匹配关系建立。 最后,如果目的是要针对不同维度做分类别的化分析,那么还可以考虑引入分组机制(group by clause)[^4]。例如按照年份划分销售业绩分布状况: ```sql SELECT YEAR(order_date), COUNT(*) FROM orders o GROUP BY YEAR(o.order_date); ``` 以上例子体现了灵活组合基础组件以适应多样化应用场景的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值