笔记本数据库需求:将尺寸向上取整至0/5后分组统计并排序
笔记本尺寸分组统计实现方案
数据库结构
notebooks_brand表:存储笔记本品牌名称数据。notebooks_notebook表:存储笔记本名称、屏幕对角线、宽度、深度、高度数据,包含关联品牌的外键字段brand_id。
需求描述
按屏幕对角线尺寸对笔记本进行分组统计,步骤如下:
- 将屏幕对角线尺寸向上取整至最近的以0或5结尾的数值(即5的倍数);
- 按取整后的尺寸分组,统计每组的笔记本数量;
- 最终结果按尺寸升序排序。
已实现的品牌统计查询
查询代码
cursor.execute("""SELECT brnd.title, COUNT(brnd.id) FROM notebooks_notebook AS ntbk JOIN notebooks_brand AS brnd ON ntbk.brand_id = brnd.id GROUP BY brnd.title """)
查询结果
- ('HP', 225)
- ('Prestigio', 1)
- ('Huawei', 6)
- ('ASUS', 223)
- ('Haier', 2)
- ('Xiaomi', 13)
- ('MSI', 34)
- ('HONOR', 15)
- ('Gigabyte', 5)
- ('Digma', 4)
- ('Lenovo', 253)
- ('Dell', 75)
- ('Acer', 82)
- ('Chuwi', 4)
- ('Apple', 55)
尺寸分组统计查询实现
查询代码
cursor.execute("""SELECT CEIL(ntbk.screen_diagonal / 5) * 5 AS rounded_size, COUNT(ntbk.id) AS notebook_count FROM notebooks_notebook AS ntbk GROUP BY rounded_size ORDER BY rounded_size ASC""")
逻辑说明
CEIL(ntbk.screen_diagonal / 5) * 5:通过先除以5、向上取整、再乘以5的方式,实现将屏幕对角线数值向上取整至最近的5的倍数(即结尾为0或5的数值);GROUP BY rounded_size:按取整后的尺寸分组;COUNT(ntbk.id):统计每组的笔记本数量;ORDER BY rounded_size ASC:按尺寸升序排序结果。
内容的提问来源于stack exchange,提问作者Maks
相关产品推荐
相关产品推荐

