首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能从数据库中的字符串数据中获取平均值?

是否有可能从数据库中的字符串数据中获取平均值?
EN

Stack Overflow用户
提问于 2019-01-29 11:24:10
回答 1查看 315关注 0票数 0

我编写了一个烧瓶应用程序,它将用户的高度、眼睛颜色和电子邮件地址保存到postgresql数据库中,然后将他们给我的数据发送给用户。我想设置它,这样用户将得到一封电子邮件,与他们的身高和眼睛颜色的平均人数。

目前,我的高度设置为整数值,眼睛颜色设置为字符串值。

通过测试,我得到了一条错误消息:

sqlalchemy.exc.ProgrammingError:(Kercopg2.ProgrammingError)函数avg(字符变化)不存在,第1行:选择avg(data.color_)作为avg_1 ^提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。1\n来自数据

我相信这是因为我试图从str中获取int数据。有办法这样做吗?假设4个人填写了这张表格,所有4个人都说他们有“蓝色”眼睛。有没有办法让程序将100%的平均值发送给他们?

我的代码如下:

代码语言:javascript
复制
class Data(db.Model):
    __tablename__="data"
    id=db.Column(db.Integer,primary_key=True)
    email_=db.Column(db.String(120), unique=True)
    height_=db.Column(db.Integer)
    color_=db.Column(db.String(6))

@app.route("/success", methods=['POST'])
def success():
    if request.method=='POST':
        email=request.form["email_name"]
        height=request.form["height_name"]
        color=request.form["color_name"]
        send_email(email, height, color)
        if db.session.query(Data).filter(Data.email_==email).count() == 0:
            data=Data(email,height,color)
            db.session.add(data)
            db.session.commit()
            average_height = db.session.query(func.avg(Data.height_)).scalar()
            average_color = db.session.query(func.avg(Data.color_)).scalar()
            print(average_height)
            print(average_color)
            return render_template("success.html")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-30 05:06:40

下面是一个您可以参考的例子:

考虑user_data表有nameeye_color两列

代码语言:javascript
复制
SELECT eye_color, count(*) AS user_count,
       COUNT(*) * 100.0/ SUM(COUNT(*)) OVER() as percent
FROM user_data
GROUP BY eye_color;

此查询将给出拥有每个有色眼睛的用户的数量和百分比。请这把小提琴四处游玩。您需要在Python应用程序中找到适合这个查询的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54419975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档