我被困在試圖返回過去12個月的總和,當月和年用作輸入。選擇前12個月按月和年輸入
根據輸入我可以得到一整年(從1月到12月),但是我之後說的是如果我輸入('08','2017')它會計算08/2016-08的總計/ 2017年。
我知道我將不得不添加另一個輸入併爲其指定一個值,例如IN targetMonth int
,但我不確定如何去處理INTERVAL。
'date_admitted'列的值爲'2010-01-30'的形式。本質上,生成的表如下所示:
Month Total %
08 2016 10 16
09 2016 10 16
10 2016 10 16
11 2016 10 16
12 2016 10 16
01 2017 10 16
etc etc etc
我的繼承人了整整一年
DROP PROCEDURE IF EXISTS YrReport;
DELIMITER //
CREATE PROCEDURE YrReport(
IN targetYear int)
BEGIN
SELECT DATE_FORMAT(date_admitted, '%m')
AS Month,
COUNT(id)
AS Total,
ROUND(COUNT(id)/(SELECT COUNT(id) FROM
accessions
WHERE year(date_admitted) = targetYear)*100)
AS '%'
FROM accessions
WHERE year(date_admitted) = targetYear
GROUP BY DATE_FORMAT(date_admitted, '%Y%m');
END //
DELIMITER ;
請參閱:[爲什麼我應該爲我認爲是非常簡單的SQL查詢提供一個MCVE?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an -mcve-for-what-seem-to-what-seems-a-very-simple-sql-query) – Strawberry
是將INTERVAL語句添加到WHERE子句中的方式嗎?我有一個去它,但我認爲它不會工作,因爲我的輸入是int而不是日期? – Blake