【问题标题】:Clojure + Korma - SUM aggregation query with IF conditionClojure + Korma - 带有 IF 条件的 SUM 聚合查询
【发布时间】:2014-09-18 05:25:29
【问题描述】:

sum-if 在 Korma 中如何工作?

这里是示例查询

SELECT SUM(if(items.quantities > 1, 1, 0)) AS multiples FROM items;

我让它与 Korma 提供的 raw-exec 一起工作。但是,我很想知道如何用 Korma 语法编写它。

我试过查看http://sqlkorma.com/docs#select

【问题讨论】:

    标签: mysql clojure korma


    【解决方案1】:

    IF 是供应商特定的功能,所以我怀疑它会被支持。

    将查询转换为供应商中立的内容并改用它可能会更好。

    这个查询:

    SELECT SUM(if(items.quantities > 1, 1, 0)) AS multiples FROM items;
    

    相当于下面的一个:

    SELECT count(*) AS multiples FROM items WHERE quantities > 1;
    

    转换为以下 korma 表达式:

    (select items 
         (aggregate (count  :*) :multiples) 
         (where {:quantities [> 1]}))
    

    【讨论】:

      【解决方案2】:

      我会使用这个:

      (select items
              (fields (raw "SUM(if(items.quantities > 1, 1, 0)) AS multiples"))
      

      【讨论】:

        猜你喜欢
        • 2020-02-06
        • 1970-01-01
        • 2021-01-11
        • 2021-08-23
        • 2017-02-22
        • 1970-01-01
        • 2021-10-24
        • 2014-01-22
        • 2014-03-23
        相关资源
        最近更新 更多