【问题标题】:How to use Group By in play framework?如何在游戏框架中使用 Group By?
【发布时间】:2015-02-07 02:41:03
【问题描述】:

我想在游戏框架中使用 Group By。有人可以告诉我如何在游戏框架中使用 Group By 吗?

【问题讨论】:

  • 你的意思是scala groupBy,还是SQL“group by”?请提供更多详细信息,说明您正在尝试做的事情以及到目前为止您已经尝试过的事情。
  • SQL“分组依据”。我现在正在阅读文档的播放框架。我想'find.where().groupBy("fieldname").findList()'。但是,我没有找到诸如“groupBy”之类的方法。

标签: playframework ebean playframework-2.3


【解决方案1】:

您可以运行 rawsql 例如。

String sql   
    = " select order_id, o.status, c.id, c.name, sum(d.order_qty*d.unit_price) as totalAmount"  
    + " from o_order o"   
    + " join o_customer c on c.id = o.kcustomer_id "  
    + " join o_order_detail d on d.order_id = o.id "  
    + " group by order_id, o.status ";  

RawSql rawSql =   
    RawSqlBuilder  
        // let ebean parse the SQL so that it can  
        // add expressions to the WHERE and HAVING   
        // clauses  
        .parse(sql)  
        // map resultSet columns to bean properties  
        .columnMapping("order_id",  "order.id")  
        .columnMapping("o.status",  "order.status")  
        .columnMapping("c.id",      "order.customer.id")  
        .columnMapping("c.name",    "order.customer.name")  
        .create();  


Query<OrderAggregate> query = Ebean.find(OrderAggregate.class);  
    query.setRawSql(rawSql)          
    // add expressions to the WHERE and HAVING clauses  
    .where().gt("order.id", 0)  
    .having().gt("totalAmount", 20);  

List<OrderAggregate> list = query.findList(); 

注意:别忘了导入com.avaje.ebean.*;

Source

【讨论】:

    【解决方案2】:

    Ebean 中使用GroupBy 的一种方法是使用SqlQuery

    // Necessary imports..
    import com.avaje.ebean.Ebean;
    import com.avaje.ebean.Query;
    
    // SQL query.
    String sql = "select max(salary) as maximum_salary, min(salary) as minimum_salary, department_id from employee_details where joining_date > :date group by department_id";
    
    // Will get the list of Sql rows.
    List<SqlRow> sqlRows = Ebean.createSqlQuery(sql).setParameter("date", "1995-10-21").findList();
    
    // Getting first row of the list
    SqlRow sql_row = sqlRows.get(0);
    
    // Getting values of respective columns by using their name
    int maximumSalary = sql_row.getInteger("maximum_salary");
    int minimumSalary = sql_row.getInteger("minimum_salary");
    int departmentID  = sql_row.getInteger("department_id");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      • 1970-01-01
      • 2015-05-17
      相关资源
      最近更新 更多