2016-02-27 170 views
1

我试图得到一份订单报告,不仅返回客户订单总数,还返回三个附加字段,其中包含第一个和最后一个订单的日期以及范围第一个和最后为了订单日期范围内的SQL客户订单查询

下面的查询

之间

SELECT customers.name, 
    customers.customer_id, 
    COUNT(orders.order_id) AS Orderscount 
    FROM customers 
    JOIN orders ON customers.customer_id = orders.customer_id 
    GROUP BY customers.name, 
      customers.customer_id      
     HAVING Orderscount >= 2 
     ORDER BY Orderscount DESC 
(以天为单位)返回名称,CUSTOMER_ID和订单总数的计数表。

问题是,如何添加此查询以获取first_order,last_order和两者之间的日期范围的日期?

我正在使用SQLite。

回答

3

使用MINMAX获得第一和最后订购日期和julianday()计算范围:

SELECT customers.name, 
    customers.customer_id, 
    COUNT(orders.order_id) AS Orderscount, 
    MIN(col_name) AS firstOrder, 
    MAX(col_name) AS lastOrder, 
    ROUND(julianday(MAX(col_name)) - julianday(MIN(col_name))) AS range 
FROM customers 
JOIN orders ON customers.customer_id = orders.customer_id 
GROUP BY customers.name, 
     customers.customer_id      
HAVING Orderscount >= 2 
ORDER BY Orderscount DESC 
+0

这工作非常出色。范围出现为一个分数'天'的数字。我将如何将它整数到一个整数? (我将col_name更改为我的purchase_date字段) –

+1

@TotteKarlsson将“ROUND”添加到最近的整数。 – lad2025

+0

@TotteKarlsson或'CAST(... AS INT)'截断小数部分 – lad2025