都还有优化

-- 按天统计
select date useDate ,count moduleNumber  from (
SELECT DATE_FORMAT(date,'%Y-%m-%d') AS date,IFNULL(data.num, 0) AS count
FROM (
         SELECT @days := DATE_ADD(@days, INTERVAL - 1 DAY) AS date
         FROM (SELECT @days := DATE_ADD(CURDATE(), INTERVAL + 1 DAY)
               FROM basic_use_list
              ) day
         WHERE DATE_FORMAT(@days, '%Y-%m-%d') >
               '2022-01-15'
         ORDER BY date
     ) dates

LEFT JOIN (
	SELECT
		sum(module_number) AS num,
		DATE(use_date) AS time
	FROM
		basic_use_list
	WHERE
		1 = 1
	AND use_type = 0
	AND module_id = 42 
	GROUP BY
		DATE(use_date)
) data ON DATE(time) = date
where DATE(date) <= '2022-12-31'
ORDER BY date) a 

;


-- SELECT DATE_SUB(CURDATE(), INTERVAL 90 DAY) from dual


-- 按月统计
SELECT
	datee useDate,
	sum(count)  moduleNumber
FROM
	(
		SELECT
			DATE_FORMAT(date, '%Y-%m') AS datee,
			IFNULL(DATA .num, 0) AS count
		FROM
			(
				SELECT
					@days := DATE_ADD(@days, INTERVAL - 1 DAY) AS date
				FROM
					(
						SELECT
							@days := DATE_ADD(CURDATE(), INTERVAL + 1 DAY)
						FROM
							basic_use_list
					) DAY
				WHERE
					DATE_FORMAT(@days, '%Y-%m-%d') > '2022-07-01'
				ORDER BY
					date
			) dates
		LEFT JOIN (
			SELECT
				sum(module_number) AS num,
				DATE_FORMAT(use_date, '%Y-%m-%d') AS time
			FROM
				basic_use_list
			WHERE
				1 = 1
			AND use_type = 0
			AND module_id = 42
			GROUP BY
				DATE(time)
		) DATA ON DATE(time) = date
		where DATE(date) <= '2023-12-31'
		ORDER BY
			date
	) a 
GROUP BY datee;


SELECT
	module_id AS moduleId,
	module_name AS moduleName,
	sum(module_number) AS moduleNumber,
	use_date AS useDate
FROM
	basic_use_list
WHERE
	1 = 1
AND use_type = 0
AND module_id = 41
AND use_date >= '2022-01-01'
AND use_date <= '2022-12-31'
group by useDate
ORDER BY
	useDate ASC


-- 按周统计
SELECT
	datee useDate,
	sum(count)  moduleNumber
FROM
	(
		SELECT
			DATE_FORMAT(date, '%Y-%m-%d') AS datee,
			IFNULL(DATA .num, 0) AS count
		FROM
			(
				SELECT
					@days := DATE_ADD(@days, INTERVAL - 1 DAY) AS date
				FROM
					(
						SELECT
							@days := DATE_ADD(CURDATE(), INTERVAL + 1 DAY)
						FROM
							basic_use_list
					) DAY
				WHERE
					DATE_FORMAT(@days, '%Y-%m-%d') > '2022-12-07'
				ORDER BY
					date
			) dates
		LEFT JOIN (
			SELECT
				sum(module_number) AS num,
				DATE_FORMAT(use_date, '%Y-%m-%d') AS time
			FROM
				basic_use_list
			WHERE
				1 = 1
			AND use_type = 0
			AND module_id = 19
			GROUP BY
				DATE(time)
		) DATA ON DATE(time) = date
		where DATE(date) <= '2023-02-07'
		ORDER BY
			date
	) a 
GROUP BY (DATEDIFF(datee, DATE_FORMAT(DATE_SUB('2022-12-07',INTERVAL 1 DAY),'%Y-%m-%d'))-1) DIV 7
;