Asked Dec 29th, 2021 2:17 PM 85 0 2
  • 85 0 2
0

Hỏi về query (HELP)

Share
  • 85 0 2

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 ANSWERS


Answered Dec 30th, 2021 3:29 AM
Accepted
+2
            $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é
Share
Answered Dec 30th, 2021 1:50 AM
0

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

Share
Viblo
Let's register a Viblo Account to get more interesting posts.