私は次の表を持っています
|id|city|job|
|12|New York|Truck driver|
|13|Chicago|Postman|
|14|New York|Postman|
|15|Las Vegas|Dealer|
|16|Las Vegas|Dealer|
|17|New York|Post Office|
各都市にいくつの仕事があるかを数えて、最も多くの仕事がある 10 の都市を DESC 順に返すことができるようにしたいと考えています。以下のように
- ニューヨーク (3)
- ラスベガス (2)
- シカゴ (1)
どうすればこれを達成できますか?
私のコードは次のようになります
$this->db->select('city');
$this->db->select_sum('city', 'total');
$this->db->group_by('city');
$this->db->order_by('total', 'desc');
$query = $this->db->get('job', 10);
foreach ($query->result() as $row) {
$data[] = array(
'total' => $row->total,
'city' => $row->city
);
}
return $data;
このスレッドからインスピレーションを得ました: COUNT / GROUP BY with active record?
しかし、それを正しく理解していないようです。