我在用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不幸的是,输出不是按频率排序的。如何修复查询以使其更好地工作?
发布于 2016-07-17 21:31:06
在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)]https://stackoverflow.com/questions/38421760
复制相似问题