SQL题与解析

SQL题与解析


文章目录


1. 活跃业务查询

SQL题与解析

  • 解题思路
  1. 先用自查询计算每种事件类型(event_type)的平均值,使用分组和AVG函数。
  2. 将原表与自查询计算的事件平均值表JOIN(条件是事件类型相同),使原表每行获得事件平均值。
  3. 过滤JOIN后表格中不符合条件(occurences小于平均值)的行,并按业务分组计算每种业务(bussiness_id)还有两个事件符合的数量。
  4. 最后用最外层查询过滤符合条件的业务。也可以用HAVING直接过滤。
SELECT
    business_id
FROM(
    SELECT 
        business_id,
        COUNT(1) AS num
    FROM 
        Events AS e
    JOIN (
        SELECT 
            event_type, 
            AVG(occurences) AS eventAvg
        FROM 
            Events
        GROUP BY 
            event_type
    ) AS e1 
    ON
        e.event_type = e1.event_type
    WHERE 
        e.occurences > e1.eventAvg
    GROUP BY 
        business_id
) o1
WHERE
    num >= 2
上一篇:「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之业务数据增删改查(七)


下一篇:【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】