按条款分组烧瓶炼金术
group by clause flask alchemy
sample = {
'13-18':50,
'19-25':60,
'25-40':50,
'50-80':100
}
我想找到属于上述类别的用户数,即分别从年龄 13-18, 19-25
开始,我将如何使用 SQLalchemy 进行查询,我我只有出生日期字段可以使用
dob : 07/10/2005
DOB就是上面提到的格式
您应该添加更多详细信息。您的数据库是什么(postres、mysql、其他?)?根据数据库的不同,有不同的内置函数集。 dob
列的类型是什么?它是字符串还是日期时间。
在 postgreSQL 中,您的实现可能是:
select
case
when age < 13 then '0-12'
when age >= 13 and age < 25 then '13-25'
when age >= 25 and age < 40 then '25-40'
when age >= 41 and age < 80 then '41-80'
else '80+'
end as range,
count(*)
from (
SELECT
1 + extract('years' from justify_interval(now() - to_date(dob, 'DD/MM/YYYY'))) as age
from table
) x
group by range
您可以将其重写为 sqlalchemy 语法,但这很棘手。您还可以在 sqlalchemy 中使用原始 sql 执行,例如:
from sqlalchemy.sql import text
statement = text(<sql_above>)
result = session.execute(statement)
sample = {
'13-18':50,
'19-25':60,
'25-40':50,
'50-80':100
}
我想找到属于上述类别的用户数,即分别从年龄 13-18, 19-25
开始,我将如何使用 SQLalchemy 进行查询,我我只有出生日期字段可以使用
dob : 07/10/2005
DOB就是上面提到的格式
您应该添加更多详细信息。您的数据库是什么(postres、mysql、其他?)?根据数据库的不同,有不同的内置函数集。 dob
列的类型是什么?它是字符串还是日期时间。
在 postgreSQL 中,您的实现可能是:
select
case
when age < 13 then '0-12'
when age >= 13 and age < 25 then '13-25'
when age >= 25 and age < 40 then '25-40'
when age >= 41 and age < 80 then '41-80'
else '80+'
end as range,
count(*)
from (
SELECT
1 + extract('years' from justify_interval(now() - to_date(dob, 'DD/MM/YYYY'))) as age
from table
) x
group by range
您可以将其重写为 sqlalchemy 语法,但这很棘手。您还可以在 sqlalchemy 中使用原始 sql 执行,例如:
from sqlalchemy.sql import text
statement = text(<sql_above>)
result = session.execute(statement)