Python 如何在SQL alchemy中连接同一个表并计算数据
我有一张这样的桌子:Python 如何在SQL alchemy中连接同一个表并计算数据,python,mysql,sql,orm,sqlalchemy,Python,Mysql,Sql,Orm,Sqlalchemy,我有一张这样的桌子: | id | company_name | income | year | |----|--------------|--------|------| | 0 | A | 10 | 2010 | | 1 | A | 20 | 2011 | | 2 | A | 30 | 2012 | | 3 | B | 20 | 2010 | | 4 | B
| 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 |
| | 2010 | 2011 | 2012 |
|----------------|------|------|------|
| income | 10 | 20 | 30 |
| increase_ratio | - | 2 | 1.5 |
我想要一张这样的桌子:
| 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 |
| | 2010 | 2011 | 2012 |
|----------------|------|------|------|
| income | 10 | 20 | 30 |
| increase_ratio | - | 2 | 1.5 |
在SQL中,我可以通过使用alias和join获得这种结果,但是如何使用python SQL alchemy获得这种结果呢
该表的数据库为MySQL,原表的架构如下:
from sqlalchemy import MetaData, Integer, Float, String
from sqlalchemy import Table, Column
metadata = MetaData()
income = Table(
'income', metadata,
Column('company_id', Integer, primary_key=True),
Column('company_name', String(255), nullable=False),
Column('income', Float, nullable=False),
Column('year', Integer, nullable=False),
)
试试这个:
select 'Income' AS ` `, MAX(CASE WHEN Year= 2010 THEN income END)`2010`
,MAX(CASE WHEN Year= 2011 THEN income END)`2011`
,MAX(CASE WHEN Year= 2012 THEN income END)`2012`
from(
SELECT A.*,(A.income/B.income)increase_ratio
FROM My_Table A
LEFT JOIN My_Table B ON B.id = A.id-1
WHERE A.company_name = 'A'
)D
UNION
select 'increase_ratio' AS ` `,MAX(CASE WHEN Year= 2010 THEN increase_ratio END)`2010`
,MAX(CASE WHEN Year= 2011 THEN increase_ratio END)`2011`
,MAX(CASE WHEN Year= 2012 THEN increase_ratio END)`2012`
from(
SELECT A.*,(A.income/B.income)increase_ratio
FROM My_Table A
LEFT JOIN My_Table B ON B.id = A.id-1
WHERE A.company_name = 'A'
)D
请在列表中检查此项
输出:
您还需要使用别名和连接:,您使用的是哪台服务器,SQL server、MySQL还是其他什么?我使用的是MySQL谢谢这个漂亮的脚本,我将尝试将其转换为SQL alchemy表单,看看它是否有效。