这使用MAKEDATE()
函数来创建一年的第一天,然后添加适当的月份间隔来计算(二月)月份的开始和下个月的开始日期。
用 1代替?
一月,用 2 代替二月等:
SELECT
this_year.departement_no
FROM
( SELECT departement_no, COUNT(*) AS num_sales
FROM department
WHERE date >= MAKEDATE( YEAR(NOW()), 1) + INTERVAL (?-1) MONTH
AND date < MAKEDATE( YEAR(NOW()), 1) + INTERVAL (?) MONTH
GROUP BY departement_no
) this_year
LEFT JOIN
( SELECT departement_no, COUNT(*) AS num_sales
FROM department
WHERE date >= MAKEDATE( YEAR(NOW())-1, 1) + INTERVAL (?-1) MONTH
AND date < MAKEDATE( YEAR(NOW())-1, 1) + INTERVAL (?) MONTH
GROUP BY departement_no
) last_year
ON last_year.departement_no = this_year.departement_no
WHERE
this_year.num_sales > 1.2 * COALESCE(last_year.num_sales, 0) ;
如果您希望(作为您相当奇怪的要求)不显示今年 2 月有销售而去年没有销售的部门,请删除该COALESCE()
功能。您还可以更改LEFT
加入INNER
加入:
WHERE
this_year.num_sales > 1.2 * last_year.num_sales ;