Domanda Come contare gruppo per righe in rotaie?


Quando lo uso User.count(:all, :group => "name"), Ottengo più file, ma non è quello che voglio. Quello che voglio è il conteggio delle righe. Come posso averlo?


21
2017-10-30 03:42


origine


risposte:


  1. User.count fornirà il numero totale di utenti e si tradurrà nel seguente SQL: SELECT count(*) AS count_all FROM "users"
  2. User.count(:all, :group => 'name') ti fornirà la lista di nomi univoci, insieme ai loro conteggi, e si tradurrà in questo SQL: SELECT count(*) AS count_all, name AS name FROM "users" GROUP BY name

Sospetto che tu voglia l'opzione 1 di cui sopra, ma non sono chiaro su cosa esattamente vuoi / bisogno.


26
2017-10-30 13:29



Attualmente (18.03.2014 - Rotaie 4.0.3) questa è la sintassi corretta:

Model.group("field_name").count

Restituisce hash con conteggi come valori per esempio.

SurveyReport.find(30).reports.group("status").count

#=> {
  "pdf_generated" => 56
}

25
2018-03-18 15:20



Probabilmente vuoi contare il nome distinto dell'utente?

User.count(:name, :distinct => true)

restituirebbe 3 se si ha un utente con nome John, John, Jane, Joey (ad esempio) nel database.

 ________
| name   |
|--------|
| John   |
| John   |
| Jane   |
| Joey   |
|________|

11
2017-10-31 15:25



Prova a utilizzare User.find (: all,: group => "name"). Count

In bocca al lupo!


5
2017-10-30 13:29