MySQL 查询 : Customer Order Value and Order Count for Multiple Date Ranges

标签 mysql

我有以下查询,非常适合返回定义时间段内每个客户的订单数和值(value)。

SELECT
c.company, 
c.email,
SUM(o.total_value) AS ttl_order_value,
COUNT(p.order_id) AS ttl_order_count
FROM merch_orders_ist AS o
  INNER JOIN contacts_ern AS c
    ON (o.contact_id = c.contactid)
  INNER JOIN merch_payments_ist AS p
    ON (o.id = p.order_id)
WHERE DATE(p.date_of_payment) BETWEEN '2014-01-01' AND '2014-12-31' 
GROUP BY c.contactid 
ORDER BY ttl_order_value DESC

我需要扩展此查询以添加另外两列,其中包括第二个日期范围(例如 2015 年和 2014 年)的订单总额和每个客户的订单总值(value)。我正在寻找的结果看起来像这样......

| company | email | ttl_order_value_2015 | ttl_order_count_2015 | ttl_order_value_2014 | ttl_order_count_2014 |
---------------------------------------------------------------------------------------------------------------

提前谢谢您!

最佳答案

我给出了伪代码,需要一些修改,但应该根据您的要求工作。

注意:如果语法不起作用,请将 SUM(o.total_value) 删除为 o.total_value 。您可以通过编写一个简单的外部查询和分组来使用 SUM

SELECT
c.company, 
c.email,
-- Using date put some condtions like >,< or extarct year and compare
DECODE(p.date_of_payment, '2014',SUM(o.total_value),0) AS ttl_order_value_2014,
Decode(p.date_of_payment,'2014' ,COUNT(p.order_id),0) AS ttl_order_count_2014,

DECODE(p.date_of_payment, '2015',SUM(o.total_value),0) AS ttl_order_value_2015,
Decode(p.date_of_payment,'2015' ,COUNT(p.order_id),0) AS ttl_order_count_2015,

FROM merch_orders_ist AS o
  INNER JOIN contacts_ern AS c
    ON (o.contact_id = c.contactid)
  INNER JOIN merch_payments_ist AS p
    ON (o.id = p.order_id)
WHERE DATE(p.date_of_payment) BETWEEN '2014-01-01' AND '2014-12-31' 
GROUP BY c.contactid 
ORDER BY ttl_order_value DESC

关于MySQL 查询 : Customer Order Value and Order Count for Multiple Date Ranges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34324499/

相关文章:

mysql - Mysql中如何计算百分比?

mysql - 在 MySQL DB 中保存聊天消息,架构设计

mysql - 使用 HAVING 连接三个表

java - 如何在JSP中插入数据后创建表并通过java将该数据保存到mysql

mysql - Rails - 如何强制关联使用别名表名

mysql - Docker Image 中无法通过套接字连接到本地 MySQL 服务器错误

iphone - 根据纬度经度进行半径搜索的SQL查询

mysql - 合并两个选择语句

php - 如何创建一个新列包含 id 列的散列

php - 表单和 HTML Purifier/MySQL 的编码问题