毎月の過去6か月間にラジオで曲が再生された合計時間を見つける必要があるストアドプロシージャを作成する必要があります。つまり、6か月前まで、今月、先月など、6つの出力があります。これを行うには、Track_noのstart_airtimeとfinish_airtimeを使用する必要があります。これらの合計は私に合計放送時間を与え、個々の月ごとに区切る必要があり、出力には2つの列が含まれている必要があります。最初は月の名前、次に放送された合計時間です。
開始放送時間と終了放送時間は曲の長さですが、これら2つの値から導出するために使用できるこの情報がありません。
私のテーブルの設定は次のとおりです。
track_no TINYINT(3) UNSIGNED
genre VARCHAR(60)
purchasedate DATE NOT NULL
start_airtime TIME NOT NULL
finish_airtime TIME
artist CHAR(9)
私はストアドプロシージャについて完全に無知なので、どんな情報でもありがたいです。どうもありがとう。
これまでのところ私のコードは:
DELIMITER //
DROP PROCEDURE IF EXISTS airtime_of_month//
CREATE PROCEDURE airtime_of_month(IN track_input TINYINT)
BEGIN
DECLARE x, track_num TINYINT;
DECLARE totalTime VARCHAR(25);
SET x = 7;
SET track_num = track_input;
WHILE x > 1 DO
SET x = x - 1;
SELECT track_no INTO track_num
FROM Radio
WHERE track_input = track_no;
IF (track_input IS NULL) THEN
SELECT CONCAT(track_input, ' Is Not
A Valid Track Number') as _;
ELSE
SELECT track_no,
CONCAT(FLOOR(HOUR(TIMEDIFF(finish_airtime,start_airtime)) / 24), ' days ',
MOD(HOUR(TIMEDIFF(finish_time,start_airtime)), 24), ' hrs ',
MINUTE(TIMEDIFF(finish_airtime,start_airtime)), ' minutes ') AS total_AirTime
FROM Radio
WHERE DATE_SUB(MONTH(purchasedate), INTERVAL x
MONTH);
END IF;
SELECT track_num;
END WHILE;
END //
CALL airtime_of_month (2)/
DELIMITER ;
しかし、私がこれを行うと、コンパイルは行われますが、何も返されません。何か案は?