【问题标题】:PHP select and group by date (month and year) as well as userPHP按日期(月和年)以及用户选择和分组
【发布时间】:2015-10-02 15:49:53
【问题描述】:

我有一张包含这样信息的表格:

id | staff_id | start_date
1  | 14       | 2015-04-02 00:00:00
2  | 16       | 2015-04-15 00:00:00
3  | 14       | 2015-05-31 00:00:00
4  | 12       | 2015-05-04 00:00:00

我要做的是选择并计算每个工作人员所做的所有条目,并按月和年对它们进行分组,以便显示如下:

Staff Member  | 12  | 14  | 16
2015-04       | 0   | 1   | 1
2015-05       | 1   | 1   | 0

谁能帮我弄清楚如何生成这个?我只是不知道如何为每个员工创建一个新列,以及每个月/年的一行。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    这是一个透视查询,但由于日期有点复杂:

    select date_format(start_date, '%Y-%m') as yyyymm,
           sum(staff_id = 12) as `12`, sum(staff_id = 14) as `14`,
           sum(staff_id = 16) as `16`
    from table t
    group by yyyymm;
    

    如果您事先不知道员工 ID,则需要使用动态 SQL。谷歌“MySQL 动态支点”看看如何做到这一点。

    【讨论】:

      【解决方案2】:

      这称为交叉表查询(又名数据透视表)。 MySql 本身并不支持这种转换。

      可能的解决方案: 1. 以传统方式按用户和月份生成计数,然后使用 php 将数据转换为最终结果集。 2.使用电子表格程序(如Excel)在传统数据集的基础上再次为您进行转换。 3.在MySql中有办法做到,见link1,link2

      第二个链接是 SO 链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多