2016-07-17 6 views
1

私は非常に単純なプログラムでPythonで書かれたsqlite3データベースを使用しています。表Iはとの問題を抱えているが、3つの列が含まれています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)] 
関連する問題