MySQL Bootstrap统计信息

时间:2018-09-12 06:09:03

标签: mysql

我正在开发一个用于管理机构日常收信的应用程序。并期望记录每个字母所采取的动作。我使用了以下表格

letter_branch表

+-----------+-------------+
| branch_id | branch_name |
+-----------+-------------+
|         1 | Admin       |
|         2 | Accounts    |
|         3 | Engineering |
|         4 | Health      |
+-----------+-------------+

letter_letter表

+-----------+-------------+--------+----------------+
| letter_id | description | branch | current_status |
+-----------+-------------+--------+----------------+
|         1 | A           |      1 | Pending        |
|         2 | B           |      4 | Pending        |
|         3 | C           |      2 | Start          |
|         4 | D           |      4 | Pending        |
|         5 | E           |      3 | Start          |
|         6 | F           |      2 | Finish         |
+-----------+-------------+--------+----------------+

letter_action_taken表

+------------------------+--------+---------------------+
| letter_action_taken_id | ref_no | action_taken_status |
+------------------------+--------+---------------------+
|                    100 |      3 |                   1 |
|                    101 |      5 |                   1 |
|                    102 |      6 |                   2 |
+------------------------+--------+---------------------+
letter_action_taken表的

action_taken_status表示该操作正在进行中还是已完成。如果正在进行,则以1表示;如果完成,则以2表示。

然后我需要使用可用数据获得以下输出

+-------------+------------------------+-----------------------+-------------------------+--------------------------+
| branch_name | no_of_received_letters | no_of_ongoing_letters | no_of_completed_letters | no_of_non_action_letters |
+-------------+------------------------+-----------------------+-------------------------+--------------------------+
| Admin       |                      1 |                     0 |                       0 |                        1 |
| Accounts    |                      2 |                     1 |                       1 |                        0 |
| Engineering |                      1 |                     1 |                       0 |                        0 |
| Health      |                      2 |                     0 |                       0 |                        2 |
+-------------+------------------------+-----------------------+-------------------------+--------------------------+

为此,我使用了以下查询

select 
            branch_name,
            COUNT(pending) as pending,
            COUNT(start) as start,
            COUNT(finish) as finish,
            COUNT(balance) as balance
            FROM (
            SELECT 
            branch_name,
            CASE WHEN  letter_letter.current_status = 'pending' THEN  letter_letter.letter_id else 0  end as pending , 
            CASE WHEN  letter_letter.current_status = 'start' THEN  letter_letter.letter_id else 0  end as start , 
            CASE WHEN  letter_action_taken.action_taken_status = '1' THEN  letter_action_taken.action_taken_id else 0  end as finish ,
            CASE WHEN  letter_letter.status != 0 THEN  letter_letter.letter_id  else 0  end as balance 
            from letter_letter
            join letter_branch on letter_branch.branch_id=letter_letter.branch
            join letter_action_taken on letter_action_taken.ref_no=letter_letter.letter_id
            where letter_letter.status=1 
            ) tmp group by branch_name

但是它会产生以下输出

+-------------+------------------------+-----------------------+-------------------------+--------------------------+
| branch_name | no_of_received_letters | no_of_ongoing_letters | no_of_completed_letters | no_of_non_action_letters |
+-------------+------------------------+-----------------------+-------------------------+--------------------------+
| Admin       |                      1 |                     1 |                       1 |                        1 |
| Accounts    |                      2 |                     2 |                       2 |                        2 |
| Engineering |                      1 |                     1 |                       1 |                        1 |
| Health      |                      2 |                     2 |                       2 |                        2 |
+-------------+------------------------+-----------------------+-------------------------+--------------------------+

我不明白我要怎么做。有人可以帮忙吗?

0 个答案:

没有答案