首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按查询对组进行排序

问按查询对组进行排序
EN

Stack Overflow用户
提问于 2016-07-17 21:29:52
回答 1查看 29关注 0票数 1

我在用Python语言编写的非常简单的程序中使用sqlite3数据库。我对包含三列的表有一个问题:

代码语言:javascript
复制
id, software_version, place

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

代码语言:javascript
复制
SELECT software_ssh, COUNT (software_ssh)  FROM simple_table group by software_ssh

结果,我得到了:

代码语言:javascript
复制
program_version_1.1, 2
program_version_1.2, 2
program_version_1.3, 20
program_version_2.1, 7

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-17 21:31:06

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

代码语言:javascript
复制
SELECT
    software_ssh,
    COUNT (software_ssh) as freq
FROM simple_table
GROUP BY software_ssh 
ORDER BY freq

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

演示:

代码语言:javascript
复制
>>> 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)]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38421760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档