今天要对实现这样的一个统计效果的sql进行优化。
分析:可以看出此统计是要求针对经销商,车系两个维度对试驾次数和潜客数两个指标进行统计,试驾率是由这两个指标进行计算而得到。
1、维度:经销商,车系
2、指标:试驾次数,潜客数
原版sql如下:
分析问题:此sql给人的第一印象就是用了子查询效率低,事实它确实特别慢。而且对于不熟悉业务的人来说想看懂很痛苦。
所以我选择了重写。
仔细分析其实现:
分别计算各经销商不同车系的试驾次数,潜客数作为子查询,然后用left join 将其连接起来。
这里就把纬度降低到了经销商,故group by 语句后面只是按经销商分组。
SELECT
t_dealer.t_org_rboid AS rboId,
org_rbo.namechn AS rboName,
t_dealer.id AS dealerId,
t_dealer.namechn AS namechnName,
t_dealer. CODE AS namechnCode,
t_dealer.t_org_smallregionid AS smallregionId,
org_smallregion.namechn AS smallregionName,
yxsjcs_temp.*, qks_temp.*
FROM
(
SELECT
dealer.id AS dealer_id
FROM
t_dealer dealer
WHERE
dealer.isdel = 0
) AS dealer_temp
LEFT JOIN (
SELECT
dealer.id AS yxsjcsDealerId,
SUM( CASE WHEN carline_model.t_carline_id = '84e46cf1-02