mysql - 相关子查询 MySQL
问题描述
显然我不明白相关子查询是如何在幕后工作的。
我有以下“销售”表架构:sale_id|sale_date|product_type
我的目标是计算某种类型的已售产品与该日期售出的产品总数的比率。
例如:
1. 2015-01-03 product_1
2. 2015-01-03 product_1
3. 2015-01-03 product_3
4. 2015-01-04 product_4
5. 2015-01-05 product_1
我对 product_1 的输出应该是:
2015-01-03 0.667
2015-01-04 0
2015-01-05 1
这是我的代码想法(我们从外部查询 s1 中一一接收单个 sale_date 并在内部查询中使用它执行选择查询)。显然这不起作用:
select distinct s1.sale_date, count(select * from sales s2
where s2.sale_date = s1.sale_date
and s2.product_type = 'product1')/
count(select * from sales s3
where s3.sale_date = s1.sale_date)
from sales s1
请帮我解决这个问题!
解决方案
您要编写的查询具有子查询内的计数:
select distinct s1.sale_date
(select count(*) from sales s2 where s2.sale_date = s1.sale_date and s2.product_type = 'product1')
/ (select count(*) from sales s2 where s2.sale_date = s1.sale_date) as ratio
from sales s1
但是,这确实是低效的。您要求使用条件聚合完成的操作要简单得多,如下所示:
select sale_date, avg(product_type = 'product1') as ratio
from sales
group by sale_date
这将数据分组sale_date
; 当产品类型匹配时product_type = 'product1'
进行评估,否则。您可以在每个组中平均该值以获得该产品的每日比率。1
0
推荐阅读
- python - 使用 AST 解析的字典时遇到问题
- javascript - 拆分数组给我的不是函数
- python - 如何在熊猫中合并列和重复行值以匹配
- javascript - javascript中的AES加密和java中的解密问题
- c# - 使用循环将信息写入 excel 列
- python - Python 3 语法:文件末尾是否有 NEWLINE?
- python - 如何在语音情感特征中应用 lstm
- javascript - 在函数中多次调用时,钩子如何工作?
- css - “angular-flex-layout”没有为移动屏幕上的“mat-form-fields”添加边距
- hybris - 如何在 local.properties 中指定相对路径?