2016-07-17 192 views
1

我在用python編寫的非常簡單的程序中使用sqlite3數據庫。表我有一個問題,包含三列:訂購GROUP BY查詢

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 

不幸的是,輸出不是按頻率排序。如何修復查詢以使其更好地工作?

回答

1

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)]