Как сделать Group By в Grails на заказ по Count (*) - PullRequest
7 голосов
/ 06 мая 2010

Как мне перевести:

SELECT COUNT(*) AS `count`, `a` FROM `b` GROUP BY `a` ORDER BY `a`

в запросе grails или gorm?

Ответы [ 3 ]

11 голосов
/ 08 мая 2010

Начиная с версии 1.2, вы можете создавать псевдонимы и упорядочивать их по псевдониму.

Подробнее см. https://cvs.codehaus.org/browse/GRAILS-3875 и https://cvs.codehaus.org/browse/GRAILS-3655.

Применительно к вашему собственному коду HQL-запрос будет:

def c = b.createCriteria() 
def results = c { 
  projections {
    groupProperty("a")
    count("a", 'myCount')  //Implicit alias is created here !
  }
  order 'myCount'
}
3 голосов
/ 11 мая 2010

работает в Граале 1.2.1

def c = C.createCriteria()
def pl = c.list {
    projections {
        countDistinct 'id', 'myCount'
        groupProperty 'a'
    }
    order ('myCount', 'desc')
}

ответ, например,

[[10,a3],[2,a1],[1,a2]]
2 голосов
/ 06 мая 2010

Я бы попробовал

def c = b.createCriteria()
def results = c {
   projections {
      groupProperty("a")
      rowCount()
   }
   order("a")
}

Обратите внимание, что это не проверено.

...