簡體   English   中英

按月/年獲取唯一身份訪問者

[英]Get unique visitors by month/year

我有一個表,可跟蹤我的應用程序的所有頁面瀏覽量。

class Tracking_visits(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users_user.id'), nullable=False)
    ts = db.Column(db.DateTime(timezone=True), default=datetime.datetime.utcnow().replace(tzinfo=pytz.UTC))

此代碼可以按月/年分組訪問,效果很好。

db.session.query(func.count(Tracking_visits.id), extract('month', Tracking_visits.ts).label('m'), extract('year', Tracking_visits.ts).label('y')).group_by('m', 'y').order_by('m', 'y').all()

現在我有另一個目標。 我需要獲得唯一身份訪問的總數。 一個用戶可以進行多次訪問,但是在這種情況下,我只對按月進行的唯一訪問感興趣。 我怎樣才能做到這一點?

我讀到一些有關func.distinct()但是我不確定如何將其應用於上面的查詢。

你只需要改變.query說法讓func.count()上運行distinct()這是在以Trackin_visits.user_id作為參數:

db.session.query(func.count(distinct(Tracking_visits.user_id)),
    extract('month', Tracking_visits.ts).label('m'),
    extract('year', Tracking_visits.ts).label('y'))
    .group_by('m', 'y')
    .order_by('m', 'y')
    .all()

可以在以下站點找到有關查詢的文檔,如果向下滾動至Count() ,則會找到使用這種獨特方式的示例: http : //docs.sqlalchemy.org/en/rel_1_0/orm/query .html#the-query-object

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM