..

饿了吗 一道面试题分享和思考~

之前在上海面试后端开发的时候, 面试官问了一个数据库相关的问题:
有这么一张表: 里边存着所有用户的登录信息, 例如用户名和登录时间.
请问如何找出所有用户最近登录的记录呢?

sql:

用sql其实很简单, 就是先按时间排个序, 再按用户id groupby一下就行了.

orm:

在django的orm中也是一个道理, 可以用annotate:

举个栗子:

献个丑, 上周写的公司报表部分的代码:

for register, queryset in queryset_by_register.items():
    # 根据value和次级维度进行groupby, 生成以它们为索引的字典.
    fields_compute = [Sum(x) for x in self.header.index_action]
    queryset = queryset.values(*self.groupby).annotate(*fields_compute)

    result[register] = queryset