请求具有两个不同的日期范围

达米安·内里

我对 MySQL 提出了一个具有两个不同日期范围的请求的小问题。

我需要nb_saleslast_sales到 2014 年,但频率只在过去一年。

我想要的结果:

customer_id     |    nb_sales    |   last_sales  |   frequence
---------------------------------------------------------------
Customer ID     | Sales make by  |  How many days|  How many sales
                |  the customer  |  since the    |  has been made
                |                |  last sales?  |  this year?

第 1-3 列在第一个日期范围内:今天到 2014 年
第 4 列在第二个日期范围内:今天到 y-1

所以我试图:

  1. 创建临时表并插入频率
  2. SELECT CUSTOMER_IDnb_saleslast_salesLEFT OUTER JOIN

第一步没问题,但第二步我没有任何结果或错误消息......这发生在我想要LEFT OUTER JOIN我的临时表时:

LEFT OUTER JOIN tmp_frequence 
  ON tmp_frequence.client_id = sales_flat_order.customer_id

也许你有更好的主意?

CREATE TEMPORARY TABLE tmp_frequence (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    client_id INT,
    frequence INT,
    PRIMARY KEY (id)
);

INSERT INTO tmp_frequence (client_id, frequence)
SELECT sales_flat_order.customer_id, COUNT(sales_flat_order.entity_id)
FROM sales_flat_order
WHERE sales_flat_order.created_at BETWEEN '2014-05-22 00:00:00' and '2017-07-31 23:59:59'
GROUP BY sales_flat_order.customer_id;

/* ------------------------------  */ 
SELECT  
-- * , 
sales_flat_order.customer_id customer_id,
COUNT(sales_flat_order.entity_id) nb_sales,
DATEDIFF("2017-07-31",DATE_FORMAT(MAX(sales_flat_order_item.created_at),"%Y-%m-%d")) last_sales,
tmp_frequence.frequence frequence

FROM adl_ec.sales_flat_order_item 
LEFT OUTER JOIN sales_flat_order 
  ON sales_flat_order.entity_id = sales_flat_order_item.order_id 
LEFT OUTER JOIN tmp_frequence 
  ON tmp_frequence.client_id=sales_flat_order.customer_id

WHERE sales_flat_order_item.created_at BETWEEN '2014-05-22 00:00:00' and '2017-07-31 23:59:59'
GROUP BY customer_id;

DROP TABLE tmp_frequence ;
达米安·内里

我终于找到了解决方案。
非常感谢您的帮助:)

DROP TABLE IF EXISTS tmp_frequence;
CREATE TEMPORARY TABLE tmp_frequence (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    client_id INT,   
    recence INT,
    frequence INT,
    montant INT,
    PRIMARY KEY (id)
);

INSERT INTO tmp_frequence (client_id, frequence)
SELECT sales_flat_order.customer_id, COUNT(sales_flat_order.entity_id)
FROM sales_flat_order
WHERE sales_flat_order.created_at BETWEEN '2016-07-31 00:00:00' and '2017-07-31 23:59:59'
GROUP BY sales_flat_order.customer_id;


INSERT INTO tmp_frequence (client_id, recence, montant)
SELECT
sales_flat_order.customer_id,
DATEDIFF("2017-07-31",DATE_FORMAT(MAX(sales_flat_order_item.created_at),"%Y-%m-%d")) recence,
COUNT(sales_flat_order.grand_total) montant

FROM adl_ec.sales_flat_order_item 
LEFT OUTER JOIN sales_flat_order ON sales_flat_order.entity_id = sales_flat_order_item.order_id 
AND sales_flat_order_item.created_at BETWEEN '2014-05-22 00:00:00' and '2017-07-31 23:59:59'
AND qty_invoiced >0
AND sales_flat_order_item.sku NOT LIKE '%abo%'
AND sales_flat_order.total_qty_ordered < 5

GROUP BY customer_id;

SELECT tmp_frequence.client_id,MAX(tmp_frequence.recence) Recence,MAX(tmp_frequence.frequence) Frequence,MAX(tmp_frequence.montant) Montant
FROM tmp_frequence 
GROUP BY tmp_frequence.client_id; 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

获取具有两个不同日期范围的数据列

具有两个不同范围的DHCPD

具有相同变量但范围不同的两个循环

MYSQL合并两个表的视图,这些表在日期范围内具有不同的条目记录数

Matplotlib-具有不同范围的两个不同的颜色图

将两个具有日期范围的表合并为一个表

合并两个具有相似值但日期熊猫不同的不同数据框

基于具有日期范围的列中的两个值的 SQL 查询

如何组合来自两个不同日期范围 sql 的两个不同计数

If then语句使用两个不同的日期范围

如何连接两个具有不同IP范围的虚拟机以相互访问?

在R中绘制两个不同的分布函数。获取具有正值范围的轴

具有相同名称范围的Excel上的两个不同的从属下拉列表

Bootstrap日期范围选择器,具有两个范围,开始时一个为空

如何使用 sequenceT 和 ReaderTaskEither 发出两个具有不同错误类型的并行请求?

MySQL-将两个具有不同日期值的表与分组依据组合

如何合并两个具有不同日期时间索引的熊猫时间序列对象?

MongoDB无法找到具有两个不同字段(包括相等日期)的文档

在R中合并两个具有不同日期格式的df

更改具有不同日期格式的两个文件

从具有不同日期的两个DataFrame绘制数据

根据列值合并具有不同日期的两个表?

具有不同时区的两个Java日期之间经过的天数

计算具有两个相同日期但不同输入数据格式的价格

合并两个具有不同值的不同数组

检查是否有两个以上的日期范围重叠

来自不同线程的两个请求在同一 httpclient 实例中具有不同的 url

PANDAS-循环两个具有不同大小的日期时间索引以比较日期和值

定义具有两个变量的范围