入力として月と年が使用された最後の12ヶ月の合計を返そうとしました。月と年の入力で過去12ヶ月を選択
私は入力に基づいて1年(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 WHERE句にINTERVALステートメントを追加する方法は、 – Strawberry
ですが、これは非常に単純なSQLクエリです。私はそれに行きましたが、私の入力が日付ではないので、仕事ができないと思っていましたか? – Blake