Mysql 仅包含特定日期的按日期分组
我试过看一些类似的例子,比如按日期范围分组和工作日等,但我无法在我的查询中修复它 根据我的示例数据截图,我只需要返回Mysql 仅包含特定日期的按日期分组,mysql,date,Mysql,Date,我试过看一些类似的例子,比如按日期范围分组和工作日等,但我无法在我的查询中修复它 根据我的示例数据截图,我只需要返回 sum(salesamount)/sum(salescount) for week 1 及 每周包含5天(本例中为周三-周日) 我的尝试: select salesstartdate, date_add(salesstartdate, interval 5 day) as gdate, salesamount, salescount, sum(salesamount)
sum(salesamount)/sum(salescount) for week 1
及
每周包含5天(本例中为周三-周日
)
我的尝试:
select salesstartdate, date_add(salesstartdate, interval 5 day) as gdate,
salesamount, salescount, sum(salesamount)/sum(salescount) as ATV
from testing
group by gdate;
Week 1 15.34173913
Week 2 15.80365088
我想要的输出是:
select salesstartdate, date_add(salesstartdate, interval 5 day) as gdate,
salesamount, salescount, sum(salesamount)/sum(salescount) as ATV
from testing
group by gdate;
Week 1 15.34173913
Week 2 15.80365088
第1周获得的计算结果为(3507.1+3639.97+5258.77+8417.04+5994.48)/(285+273+344+478+368)
第2周的计算与上述相同,只是日期现在是6月8日至12日
您可以通过子查询来完成。为了首先正确分组结果集,然后对其执行聚合:
SELECT
concat('WEEK', ' ', weekno) as `Week #`,
MIN(salesstartdate) as startDate,
MAX(salesstartdate) as endDate,
sum(salesamount)/sum(salescount) as ATV
FROM
(
SELECT
salesstartdate,
salesamount,
salescount,
WEEKOFYEAR(salesstartdate) as weekno -- get the week number of the current year
FROM
weekno
WHERE
WEEKDAY(salesstartdate) BETWEEN 2 AND 6 -- get index of week day
) as weeks
GROUP BY
weekno
我在这里使用了两个MySQL函数:
输出:
WEEK 23 | 2016-06-08 | 2016-06-12 | 15.8040
WEEK 24 | 2016-06-16 | 2016-06-19 | 15.9323
也没有子查询:
SELECT
concat('WEEK', ' ', WEEKOFYEAR(salesstartdate)) as `Week #`,
MIN(salesstartdate) as startDate,
MAX(salesstartdate) as endDate,
sum(salesamount)/sum(salescount) as ATV
FROM
weekno
WHERE
WEEKDAY(salesstartdate) BETWEEN 2 AND 6 -- get index of week day
GROUP BY
WEEKOFYEAR(salesstartdate)
你可以这样做
select SUBDATE(salesstartdate, WEEKDAY(salesstartdate)) as week_range
, sum(salesamount)/sum(salescount)
from testing
where salesstartdate between SUBDATE(salesstartdate, WEEKDAY(salesstartdate))
and date_add(SUBDATE(salesstartdate, WEEKDAY(salesstartdate)), interval 5 day))
Group by week_range
你能分享你的表格数据吗?是的,根据上面的截图。这些是我表中的数据。这就是你所指的吗?哦……它不见了:(对不起,我重新附上了。谢谢wajeeh和Shah。你如何定义要花的5天?假设这个例子总是“星期三”到“星期天”。因此,如果下次我想要不同的5天,我想我可以更新查询并将“星期四”改为“星期一”例如。天哪!!太棒了!谢谢你,它甚至给了我开始和结束的日期。我今天学到了新的东西:)太感谢你了,沙阿!!完美的非常感谢你!我想知道的同时,我再次尝试后,你提示我的问题,如何定义以下查询的5天,但不工作。是不是因为我的逻辑错误了?从测试中选择salesstartdate为“日期范围1”,sum(salesamount)/sum(salescount),其中salesstartdate>='2016-06-08'和salesstartdate='2016-06-15',salesstartdate您的逻辑实际上是硬编码的,虽然它可以工作,但是你把组
条件写错了。哦,这是有道理的。我没有想到这一点。的确,如果我有10周的时间把他们结合起来,这是不可行的。感谢you@Strawberry同意,也添加了那个版本。你确定它有效吗?因为在分组时,您将没有列week\u range
。