Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按查询对组排序_Python_Sqlite - Fatal编程技术网

Python 按查询对组排序

Python 按查询对组排序,python,sqlite,Python,Sqlite,我在用python编写的非常简单的程序中使用sqlite3数据库。表I有问题,包含三列: 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_ve

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

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

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

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

SELECT
    software_ssh,
    COUNT (software_ssh) as freq
FROM simple_table
GROUP BY software_ssh 
ORDER BY freq
如果需要按频率从最频繁到最少的顺序排列行,请使用
ORDER BY freq DESC

演示:

>>从pprint导入pprint
>>>c.execute('SELECT software_ssh,COUNT(software_ssh)FROM simple_table group by software_ssh'))
>>>警察公共关系科(名单(c))
[(u’program_version_1.1',2),
(u’program_version_1.2',2),
(程序版本1.3',20),
(程序版本2.1',7)]
>>>执行(“”)
…选择
…软件_ssh,
…将(软件\u ssh)计数为频率
…从简单表格
…按软件分组\u ssh
…按频率订购
... ''')
>>>警察公共关系科(名单(c))
[(u’program_version_1.1',2),
(u’program_version_1.2',2),
(程序版本2.1',7),
(程序版本1.3',20)]
>>> 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)]