Hỏi về query (HELP)
Em có 1 bảng chứa : name, status(1,2), created_at. danh sách các user và trạng thái.
Yêu cầu: Query để hiển thị dữ liệu theo từng tháng và tỉ lệ status = 2 / status = 1 của từng tháng. Ví dụ bảng có 100 item cho 10 tháng. Em phải hiển thị hiển thị dữ liệu ra bên ngoài theo các tháng. mỗi tháng là 1 hàng với % status = 2 / status = 1 của tháng đấy ( kiểu như tỉ lệ % status < 30% thì trạng thái chung là cảnh báo, > 50 là bình thường, > 70 là tốt).
Em cảm ơn !
2 CÂU TRẢ LỜI
$schedule = DB::table('question_set_user')
->select(
'id',
DB::raw("(DATE_FORMAT(created_at, '%d-%m-%Y')) as start_start"),
DB::raw("(DATE_FORMAT(expired_date, '%d-%m-%Y')) as end_day"),
DB::raw("COUNT(CASE WHEN (status = 1) THEN status END) as total_status_unfinished"),
DB::raw("COUNT(CASE WHEN (status = 2) THEN status END) as total_status_completed"),
DB::raw("(DATE_FORMAT(created_at, '%m-%Y')) as month_year")
)
->orderBy('created_at', 'desc')
->groupBy(DB::raw("DATE_FORMAT(created_at, '%m-%Y')"))
->get();
``` mình có câu trả lời rồi nhé
Em tìm hiểu về procedure nhé. Ý tưởng là tạo 1 procedure để update/insert bảng kết quả ( bảng kết quả chính là tỷ lệ trung bình theo từng năm tháng ). Có thể gọi procedure trực tiếp ra kết quả cũng được, nhưng thông qua 1 bảng sẽ dễ hơn. https://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspx