I have a table with the following info:
id | user_id | points
--------------------------
1 | 12 | 48
2 | 15 | 36
3 | 18 | 22
4 | 12 | 28
5 | 15 | 59
6 | 12 | 31
etc.
What I want is a top 10 (array) with most entries per user_id (order high to low). So using the table above I need the following array in return:
How can I do this with CodeIgniter using query builder methods? Can this be done with COUNT and GROUP BY user_id?
I believe you'll want something like this:
$this->db->select('user_id, COUNT(user_id) as total');
$this->db->group_by('user_id');
$this->db->order_by('total', 'desc');
$this->db->get('tablename', 10);
This will produce a result like
| USER_ID | TOTAL |
| 12 | 3 |
| 15 | 2 |
| 18 | 1 |
UPDATE: As some pointed out in the comments the original query was summing the user_ids rather than counting them. I've updated the active record query to correct this.