【问题标题】:sqlalchemy how to divide 2 columns from different tablesqlalchemy如何从不同的表中划分2列
【发布时间】:2018-10-03 02:02:40
【问题描述】:

我有 2 个名为 company_infocompany_income 的表:

公司信息:

| id | company_name | staff_num | year |
|----|--------------|-----------|------|
| 0  | A            | 10        | 2010 |
| 1  | A            | 10        | 2011 |
| 2  | A            | 20        | 2012 |
| 3  | B            | 20        | 2010 |
| 4  | B            | 5         | 2011 |

公司收入:

| id | company_name | income | year |
|----|--------------|--------|------|
| 0  | A            | 10     | 2010 |
| 1  | A            | 20     | 2011 |
| 2  | A            | 30     | 2012 |
| 3  | B            | 20     | 2010 |
| 4  | B            | 15     | 2011 |

现在我想计算每个公司的平均员工收入,结果如下:

结果:

| id | company_name | avg_income | year |
|----|--------------|------------|------|
| 0  | A            | 1          | 2010 |
| 1  | A            | 2          | 2011 |
| 2  | A            | 1.5        | 2012 |
| 3  | B            | 1          | 2010 |
| 4  | B            | 3          | 2011 |

如何使用 python SQLalchemy 得到这个结果?表的数据库是MySQL。

【问题讨论】:

    标签: python sql sqlalchemy


    【解决方案1】:

    加入表格并进行标准总和。您可能想使用此查询在 MySQL 中设置自己的视图,或者直接在您的程序中创建。

    SELECT
      a.CompanyName,
      a.year,
      (a.staff_num / b.income) as avg_income
    
     FROM
      company_info as a
    
     LEFT JOIN
       company_income as b
     ON
       a.company_name = b.company_name
     AND
       a.year = b.year
    

    您还需要一些 where(例如,staff_num 不为 null 或不等于 0 且与收入相同。此外,如果您可以在两列中为同一公司/年份设置多个值,那么您将想要对列中的值进行求和,然后按公司名称和年份分组)

    【讨论】:

    【解决方案2】:

    试试这个:

    SELECT 
        info.company_name,
        (inc.income / info.staff_num) as avg,
        info.year
    FROM
        company_info info JOIN company_income inc
    ON
        info.company_name = inc.company_name
    AND
        info.year = inc.year
    

    【讨论】:

    • Python.. sqlalchemy..?
    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 2023-03-08
    • 2016-03-27
    • 2021-06-25
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 2019-06-24
    相关资源
    最近更新 更多