我有两个名为company_info
和company_income
的表:
company_info:
| 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 |
company_income:
| 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。
答案 0 :(得分: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
你也想要几个(例如,staff_num不为null或不等于0且与收入相同。如果你可以在两个列中为同一公司/年有多个值,那么你将会想要对列中的值进行求和,然后按公司名称和年份分组
答案 1 :(得分:0)
试试这个:
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