sqlalchemy使用having
时间: 2023-11-23 10:51:25 浏览: 79
在SQLAlchemy中,HAVING子句用于在GROUP BY语句后对分组进行过滤。它允许我们使用聚合函数对分组进行筛选。
下面是使用SQLAlchemy的HAVING子句的示例:
```python
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.sql import func
# 创建引擎和会话
engine = create_engine('sqlite:///example.db')
Session = sessionmaker(bind=engine)
session = Session()
# 创建模型
Base = declarative_base()
class Employee(Base):
__tablename__ = 'employees'
id = Column(Integer, primary_key=True)
name = Column(String)
salary = Column(Integer)
# 添加示例数据
session.add_all([
Employee(name='John', salary=50000),
Employee(name='Jane', salary=60000),
Employee(name='Mike', salary=70000)
])
session.commit()
# 使用HAVING子句进行筛选
query = session.query(Employee.name, func.avg(Employee.salary).label('avg_salary')).group_by(Employee.name).having(func.avg(Employee.salary) > 55000)
result = query.all()
# 打印结果
for row in result:
print(f'{row.name}: {row.avg_salary}')
```
这个例子中,我们创建了一个名为`employees`的表,包含员工的姓名和薪水。我们使用`HAVING`子句来筛选出平均薪水大于55000的员工,并打印结果。
阅读全文