我正在处理我正在搜索订单号的查询。我需要过滤当天唯一的订单号。为此,我在主查询中使用了 count(distinct order_number)。此查询从前端获取开始和结束日期并使用它们。但是我有一个问题,如果在该范围内 2 天内有相同的 order_number,则这两天都会计算在内。即计算一天的唯一订单数。最初我想在日期上使用一些循环并对结果求和,但这对我来说并不合适。我会更感兴趣使用相同的查询并根据日期为不同的订单修改它。这是我的查询:
SELECT 'site1' AS site,
DATE_FORMAT(l.login_time, '%m/%d/%Y') AS DATE,
COUNT(DISTINCT osh.order_num) AS total_orders
FROM order_history o
INNER JOIN logs l ON o.userID = l.id
WHERE o.date_time BETWEEN 1380524400 AND 1380610799
AND l.LOGIN BETWEEN FROM_UNIXTIME(1380524400) AND FROM_UNIXTIME(1380610799)
GROUP BY DATE
例子
假设日期为 8 月 29 日,我有订单 o1、o2、o1、o3、o2 我将它们计为 3 个不同的订单,即 8 月 30 日的 o1、o2、03,我有订单 o1、o4、o4、o1 我将它们计为2个不同的订单,即o1,o4
但是当我查询 8 月 29 日至 30 日时,我必须得到 3+2 = 5 的计数,即 o1 在 sicne 范围内被计数两次,它属于两个不同的日期。