【问题标题】:Count and display how many of specific column result计算并显示特定列结果的数量
【发布时间】:2013-08-17 15:53:22
【问题描述】:

我有下表

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

我希望能够计算每个城市有多少工作,然后以 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?

但似乎没有做对。

【问题讨论】:

    标签: mysql codeigniter


    【解决方案1】:

    给你:-

    $query = $this->db->query('SELECT city, COUNT(city) AS jobcount FROM `jobs` GROUP BY city ORDER BY jobcount DESC');
    
    if ($query->num_rows() > 0)
        foreach ($query->result() as $row) 
            $data[] = array(
                'total' => $row->jobcount,
                'city'  => $row->city
            );
    
    return $data;
    

    别忘了把'jobs'换成你的表名

    【讨论】:

    • 或许加个限制(mysql /TOP for mssql)?
    【解决方案2】:

    为什么不使用$this->db->query();?

    $this->db->query('SELECT CITY, COUNT(CITY) AS TOTAL FROM JOB GROUP BY CITY ORDER BY TOTAL DESC LIMIT 10');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      相关资源
      最近更新 更多