SQLAlchemy - вычисление общего процента пользовательской входной переменной - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть база данных, которая принимает 3 типа данных:

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(5))

Я хочу создать функцию, которая получает процент пользователей с таким же цветом глаз, что и цвет глаз, введенный пользователем.Я отправлю эту информацию по электронной почте пользователю, поэтому я не думаю, что триггер был бы полезен.

Это создаст таблицу с нужными мне данными, но в ней перечислены все цвета, и я не знаю, какЧтобы взять конкретный из этой таблицы:

SELECT color, count(*) AS user_count, COUNT(*) * 100.0/ SUM(COUNT(*)) OVER() as percent FROM data;

Это настолько близко, насколько я могу подумать, но это не работает.Выдает ошибку атрибута

def find_pct(color):
    return db.session.query(Data).filter(Data.color==color).count()*100/ sum.count()

1 Ответ

0 голосов
/ 07 февраля 2019

Для определенного цвета вы можете использовать агрегат FILTER предложение в Postgresql:

def find_pct(color):
    return db.session.query(
            db.func.count().filter(Data.color == color) * 100.0 /
            db.func.count()).\
        scalar()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...