按查询排序组

2024-04-26 12:26:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用python编写的非常简单的程序中使用sqlite3数据库。我遇到问题的表包含三列:

id, software_version, place

现在我想计算一个特定软件版本的频率,所以我创建了这个查询:

SELECT software_ssh, COUNT (software_ssh)  FROM simple_table group by software_ssh

因此,我得到:

program_version_1.1, 2
program_version_1.2, 2
program_version_1.3, 20
program_version_2.1, 7

不幸的是,输出不是按频率排序的。如何修复查询以使其更好地工作


Tags: from程序版本id数据库软件versioncount
1条回答
网友
1楼 · 发布于 2024-04-26 12:26:46

COUNT结果上添加ORDER BY;为该结果指定一个别名:

SELECT
    software_ssh,
    COUNT (software_ssh) as freq
FROM simple_table
GROUP BY software_ssh 
ORDER BY freq

如果需要按从最频繁到最少的顺序排列行,请使用ORDER BY freq DESC

演示:

>>> from pprint import pprint
>>> c.execute('SELECT software_ssh, COUNT (software_ssh)  FROM simple_table group by software_ssh')
<sqlite3.Cursor object at 0x102034490>
>>> pprint(list(c))
[(u'program_version_1.1', 2),
 (u'program_version_1.2', 2),
 (u'program_version_1.3', 20),
 (u'program_version_2.1', 7)]
>>> c.execute('''
... SELECT
...     software_ssh,
...     COUNT (software_ssh) as freq
... FROM simple_table
... GROUP BY software_ssh
... ORDER BY freq
... ''')
<sqlite3.Cursor object at 0x102034490>
>>> pprint(list(c))
[(u'program_version_1.1', 2),
 (u'program_version_1.2', 2),
 (u'program_version_2.1', 7),
 (u'program_version_1.3', 20)]

相关问题 更多 >