Clojure + Korma - 使用IF条件的SUM聚合查询

时间:2014-09-16 19:41:06

标签: mysql clojure korma

sum-if如何在Korma中工作?

以下是示例查询

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

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

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

2 个答案:

答案 0 :(得分: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]}))

答案 1 :(得分:0)

我会用这个:

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