热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQLite:在每个组中仅返回前2个结果

如何解决《SQLite:在每个组中仅返回前2个结果》经验,求助如何解决?

我检查了类似问题的其他解决方案,但是sqlite不支持 row_number()rank()函数,或者没有涉及连接多个表的示例,将它们按多列分组并且同时仅为每个组返回前N个结果.

这是我运行的代码

db = sqlite3.connect('mydb')

cursor = db.cursor()

cursor.execute(
    '''
    CREATE TABLE orders(
        id INTEGER PRIMARY KEY, product_id INTEGER,
        client_id INTEGER
        )
    '''
)

cursor.execute(
    '''
    CREATE TABLE clients(
        id INTEGER PRIMARY KEY, gender TEXT,
        city TEXT
        )
    '''
)

cursor.execute(
    '''
    CREATE TABLE products(
        id INTEGER PRIMARY KEY, category_name TEXT
        )
    '''
)

orders = [
    (9, 6), (3, 10), (8, 6), (4, 8),
    (5, 6), (7, 4), (9, 2), (10, 8),
    (4, 6), (3, 1), (10, 2), (9, 8),
    (9, 7), (4, 9), (7, 10), (2, 7),
    (4, 7), (6, 2), (6, 2), (9, 3),
    (10, 6), (4, 4), (2, 6), (3, 8),
    (9, 2), (1, 9), (3, 9), (9, 4),
    (5, 5), (7, 1), (8, 7), (7, 8),
    (6, 3), (9, 6), (8, 3), (7, 1),
    (10, 5), (7, 10), (8, 1), (7, 9),
    (4, 4), (3, 8), (5, 2), (5, 8),
    (6, 10), (9, 7), (2, 2), (4, 10),
    (5, 10), (3, 9)
]

clients = [
    ('Male', 'NY'),
    ('Female', 'NY'),
    ('Male', 'London'),
    ('Male', 'London'),
    ('Male', 'NY'),
    ('Female', 'NY'),
    ('Female', 'London'),
    ('Male', 'London'),
    ('Male', 'NY'),
    ('Female', 'London')
]

products = [
    ('Kitchen', ),
    ('Sport', ),
    ('Furniture', ),
    ('Furniture', ),
    ('Furniture', ),
    ('Sport', ),
    ('Sport', ),
    ('Kitchen', ),
    ('Kitchen', ),
    ('Kitchen', )
]

cursor.executemany("INSERT INTO orders(product_id, client_id) VALUES(?,?)", orders)
cursor.executemany("INSERT INTO clients(gender, city) VALUES(?,?)", clients)
cursor.executemany("INSERT INTO products(category_name) VALUES(?)", (products))

db.commit()

cursor.execute(
    '''
    SELECT
        category_name,
        city, gender,
        product_id, COUNT(product_id)
    FROM orders
    LEFT JOIN products ON product_id = products.id
    LEFT JOIN clients ON client_id = clients.id
    GROUP BY product_id, category_name, city, gender
    ORDER BY category_name, city, gender, COUNT(product_id) DESC
    '''
)

print('''category_name, city, gender, product_id, COUNT(product_id)''')

all_rows = cursor.fetchall()
for a, b, c, d, e in all_rows:
    print(a, b, c, d, e)

db.close()

现在的问题是如何在单个查询中获得这样的输出?我不需要与红线交叉的行,因为我只需要前2.

在此输入图像描述


推荐阅读
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • Iwanttointegratesort,order,maxandoffsetinafindAllquery.Thefollowingworksfine:我想在fin ... [详细]
  • Ihavethisfollowinginputfile:我有以下输入文件:test.csvdone_cfg,,,,port<0>,clk_in,subcktA,ins ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
author-avatar
陈庭勇筱玲喜芳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有