【问题标题】:Need to COUNT clients considering 3 different other columns需要考虑 3 个不同的其他列来计算客户
【发布时间】:2021-01-23 00:56:07
【问题描述】:

所以我有 2 个不同的表,我需要根据地区和公司规模计算每月有多少新客户。

新客户被理解为具有motion_type = 'new_biz'。 ID (Cust_Table) 和 OrgID (Org_table) 是 FK。

ORG_TABLE

| OrgID  | OrgCreate  | Region        | CompanySize
│ 1   │ 2020-01-10 │ south america │ 51-100
│ 2   │ 2020-03-15    │  asia   │ 0 - 50
│ 3   │ 2020-01-12    │north america│ 1001-5000
│ 4   │ 2020-10-01    │ africa      │ 0 - 50
│ 5   │ 2020-06-30    │south america│ 5001-10000

CUST_TABLE

│ ID │  CreateAt  │  Movement_type
│ 1  │ 2020-01-10 │ new_biz
│ 2  │ 2020-03-01 │ churn
│ 3  │ 2020-01-12 │ new_biz
│ 4  │ 2020-10-01 │ new_biz
│ 5  │ 2020-06-12 │ expansion

我想要得到的结果是:

│ Month │ New_Clients │ Region │ Org_Size
│ 1   │  1  │ south america │ 51-100
│ 1   │  1  │ north america  │ 1001 - 5000
│ 10 │  1  │ africa  │ 0 - 50

我尝试了以下查询,但无法正确获取新客户的数量...

选择

MONTH(CreateAt) AS '月',

ID AS '客户 ID',

CompanySize AS '公司规模',

区域作为“区域”

来自 ORG_TABLE

在 org_id = ID 上加入 CUST_TABLE

WHERE YEAR(CreateAt) = 2020 AND Movement_type = 'new_biz';

我错过了什么? :(

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    如果我理解正确,你想要聚合:

    SELECT MONTH(CreateAt) AS Month, COUNT(*) as new_clients
           CompanySize, Region 
    FROM ORG_TABLE o JOIN
         CUST_TABLE c
         ON c.org_id = o.ID
    WHERE c.CretedAt >= '2020-01-01' AND
          c.CreateAt < '2021-01-01' AND
          c.Movement_type = 'new_biz'
    GROUP BY MONTH(CreateAt), CompanySize, Region
    

    【讨论】:

    • 谢谢!!!你能指导我了解你为什么选择聚合的思考过程吗?
    • @E.A. . . .您似乎想要一个月内的新客户数量(取决于其他条件)。这似乎是聚合。
    猜你喜欢
    • 2018-09-25
    • 2016-07-09
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    相关资源
    最近更新 更多