我是靠谱客的博主 自由白云,最近开发中收集的这篇文章主要介绍php 根据日期查询,php – 如何使sql查询按日期对结果进行分组和求和?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在yii2应用程序中,我有付款模型,字段ID(主键),u_id(整数,表示从用户模型进行此付款的人的ID),总和(整数)和日期.例:

+--------------------------------+

| Payment |

+--------------------------------+

| id | u_id | sum | date |

+--------------------------------+

| 1 | 1 | 400 | 2015-11-25 |

| 2 | 1 | 200 | 2015-11-25 |

| 3 | 2 | 500 | 2015-11-25 |

| 4 | 2 | 300 | 2015-11-25 |

| 5 | 1 | 100 | 2015-11-20 |

+--------------------------------+

问:我想按日期对结果进行分组,并为每天的每个u_id汇总所有行的总和字段,并显示总行数.怎么做…?也许没有总排?在yii2或干净的mysql.结果示例:

+-------------------------------------+

| Date | User id | Money, $ |

+-------------------------------------+

| 2015-11-25 | | 1400 (total) |

| 2015-11-25 | 1 | 600 |

| 2015-11-25 | 2 | 800 |

| 2015-11-20 | | 100 (total) |

| 2015-11-20 | 1 | 100 |

+-------------------------------------+

付款方式:

public function search($params)

{

$query = Payment::find();

// do we need to group and sum here?

$dataProvider = new ActiveDataProvider([

'query' => $query,

]);

$this->load($params);

return $dataProvider;

}

我想ListView会比GridView更容易,因为我们将能够为每个结果进行一些计算.视图:

DateUser idMoney, $

= ListView::widget([

'dataProvider' => $dataProvider,

'itemView' => '_item_view',

]) ?>

_item_view:

= $model->date ?>= $model->u_id ?>= $model->sum ?>

解决方法:

试试这种方式:

select dt "Date", usr "User Id",

case when usr is null

then concat(money, ' (total)')

else money

end as "Money, $"

from (

select dt, null as usr, sum(vsum) as money

from mytable

group by dt

union

select dt, u_id, sum(vsum) as money

from mytable

group by dt, u_id

) a

order by dt desc, coalesce(usr,0)

你可以在普通的MySql中使用分析函数,但由于MySql不支持它,你必须模拟它.

在我的解决方案中,我提出了一个只按日期汇总钱的查询

select dt, null as usr, sum(vsum) as money

from mytable

group by dt

需要null作为usr列,因此我可以将UNION运算符与第二部分一起使用.此查询将汇总所有日期和金额.

然后是第二部分

select dt, u_id, sum(vsum) as money

from mytable

group by dt, u_id

Wich将通过用户总结钱来获取所有日期.

第三部分是使它成为子查询,所以我可以按日期,用户订购它.请记住,第一部分的用户是null,所以我这样做,所以每当null变为0,所以它将首先显示.

标签:php,performance,sql,mysql,yii2

来源: https://codeday.me/bug/20190829/1761767.html

最后

以上就是自由白云为你收集整理的php 根据日期查询,php – 如何使sql查询按日期对结果进行分组和求和?的全部内容,希望文章能够帮你解决php 根据日期查询,php – 如何使sql查询按日期对结果进行分组和求和?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部