美国国家标准协会 (ANSI) 结构化查询语言 (SQL) 标准定义了许多 SQL 函数。
下面这样的聚合函数在 Peewee 中很有用。
- AVG() – 返回平均值
- COUNT() – 返回行数
-
FIRST() – 返回第一个值
-
LAST() – 返回最后一个值
-
MAX() – 返回最大值
-
MIN() – 返回最小值
-
SUM() – 返回总和
为实现这些 SQL 函数,Peewee 有一个 SQL 辅助函数 fn()。应用到前面的例子,我们用它来查找每个城市的记录数。
如下示例构建了一个使用 SUM()函数的 SELECT 查询。
使用之前定义的模型中的 Bill 和 Item 表,我们显示 Bill 表中 输入的每个项目的数量总和。
项目表
项目表数据如下:
Bill 表
Bill 表内容如下
示例
我们在 Bill 和 Item 表之间创建连接,从 Item 表中选择项目名称,从 Bill 表中选择数量总和。
from peewee import *
db = SqliteDatabase('mydatabase.db')
class BaseModel(Model):
class Meta:
database = db
class Item(BaseModel):
itemname = TextField()
price = IntegerField()
class Brand(BaseModel):
brandname = TextField()
item = ForeignKeyField(Item, backref='brands')
class Bill(BaseModel):
item = ForeignKeyField(Item, backref='bills')
brand = ForeignKeyField(Brand, backref='bills')
qty = DecimalField()
db.create_tables([Item, Brand, Bill])
qs=Bill.select(Item.itemname, fn.SUM(Bill.qty).alias('Sum'))
.join(Item).group_by(Item.itemname)
print (qs)
for q in qs:
print ("Item: {} sum: {}".format(q.item.itemname, q.Sum))
db.close()
上面的脚本执行以下 SELECT 查询 –
SELECT "t1"."itemname", SUM("t2"."qty") AS "Sum" FROM "bill" AS "t2"
INNER JOIN "item" AS "t1" ON ("t2"."item_id" = "t1"."id") GROUP BY "t1"."itemname"
输出
执行结果如下:
Item: Laptop sum: 6
Item: Printer sum: 8
Item: Router sum: 8
酷客网相关文章:
评论前必须登录!
注册