View difference between Paste ID: CfgCik53 and gWSt0LB7
SHOW: | | - or go back to the newest paste.
1
DELIMITER |
2
3
DROP PROCEDURE IF EXISTS cppm|
4
# Count patients per month (5 last months)
5-
CREATE PROCEDURE cppm ()
5+
CREATE PROCEDURE cppm (OUT ototal INT)
6
BEGIN
7
    DECLARE i INT DEFAULT 5;
8
    DECLARE items TABLE(smonth DATE, total INT);
9
    DECLARE sdate DATE DEFAULT DATE_FORMAT(CURRENT_DATE(), '%Y-%c-01');
10
    WHILE i > 0 DO
11
12
        SET i = i - 1;
13
        SET sdate = DATE_SUB(sdate, INTERVAL 1 MONTH);
14
        SELECT DISTINCT COUNT(Users.id) INTO result
15
        FROM gestcab_users AS Users
16
        LEFT JOIN gestcab_roles AS Roles ON Users.role_id = Roles.id
17
        WHERE Roles.slug = 'patient'
18
        AND DATE(Users.created) < sdate AND 
19
        DATE(Users.created) >= DATE_SUB(sdate, INTERVAL 1 MONTH);
20
        INSERT INTO items(smonth, total) VALUES(sdate, result);
21
22
    END WHILE;
23
24-
    SELECT * FROM items;
24+
    SELECT Sum(total)  FROM items INTO ototal;
25
END|
26
27
CALL cppm()|
28
# SELECT @total|