有没有人可以帮我写一个MySQL查询,用于根据每半年一次的日期格式的列记录来划分数据?
我写了GROUP by Monthly和Quarterly的查询,但是半年没有发生。
我对每周、每月和每季度使用以下查询:
CREATE view darren_inventory_mrp_forecast_summary as
( SELECT row_number() OVER(ORDER BY sub.product_id) as id,
SUM(sub.quantity)/12 as quantity,
SUM(sub2.quantity)/4 as quarterly,
SUM(sub3.quantity)/51 as weekly,
sub.product_id as product_id FROM
(SELECT row_number() OVER(ORDER BY product_id) as id,
product_id as product_id,
SUM(product_qty) as quantity
FROM stock_move
WHERE consumed_for IS NOT NULL
GROUP BY to_char(DATE(create_date), 'YYYY-MM'), product_id
)
as sub
LEFT JOIN
(SELECT row_number() OVER(ORDER BY product_id) as id,
product_id as product_id,
SUM(product_qty) as quantity
FROM stock_move
WHERE consumed_for IS NOT NULL
GROUP BY to_char(DATE(create_date), 'YYYY-Q'), product_id
)
as sub2 on (sub2.product_id=sub.product_id)
LEFT JOIN
(SELECT row_number() OVER(ORDER BY product_id) as id,
product_id as product_id,
SUM(product_qty) as quantity
FROM stock_move
WHERE consumed_for IS NOT NULL
GROUP BY to_char(DATE(create_date), 'YYYY-WW'), product_id
)
as sub3 on (sub3.product_id=sub.product_id)
GROUP BY sub.product_id
)发布于 2016-10-01 04:01:34
您可以使用此方法获取日期项出现的月份的第一天。
select last_day(datecolumn) + interval 1 day - interval 1 month 您可以使用下面的代码获取日期项的年份月份
select month(datecolumn)您可以像这样获得半年(0-5)的月数
select (month(datecolumn) -1) mod 6所以,你可以像这样得到半年的第一天。
select last_day(datecolumn) + interval 1 day - interval 1 month
- interval (month(datecolumn) -1) mod 6 month然后,您可以根据这个大表达式进行分组,并以这种方式总结您的数据。
这也是可行的:
select last_day(datecolumn) + interval 1 day - interval 1 month
- interval (quarter(datecolumn) -1) mod 2 quarter诀窍是想出一个表达式,将任何日期时间表达式截断到它所在的半年的第一天。
如果您只想处理特定年份的内容,可以这样做。
WHERE datecolumn >= DATE_FORMAT(NOW(), '%y-01-01') - INTERVAL 1 YEAR
AND datecolumn > DATE_FORMAT(NOW(), '%y-01-01') + INTERVAL 1 YEAR此特定示例选择2015和2016日历年中的所有内容。表达式DATE_FORMAT(someTimestampValue, '%y-01-01')将日期或日期时间值截断到日历年的开始。
发布于 2018-02-28 18:01:58
MySql中没有half_year函数,但可以从quarter开始计算:
floor( quarter (date_column) / 3)这个函数返回0表示1,2季度,1表示3,4季度。
因此,按半年分组:
GROUP BY year(date_column) + 0.1 * floor(quarter(date_column) / 3)发布于 2020-04-28 02:10:58
我首先通过按年分组来解决这个问题,然后聚合季度,以便第一季度和第二季度返回1,第三季度和第四季度返回2。
GROUP BY YEAR(date_column), CEILING(QUARTER(date_column) / 2)如果您只想按半年为1或2进行分组,则可以跳过年份(Date_column)部分。
https://stackoverflow.com/questions/39798591
复制相似问题