2 回答

TA貢獻1843條經驗 獲得超7個贊
average中的方法$q->average('DATEDIFF('created_at', CURRENT_DATE())');只是添加AVG(DATEDIFF('created_at', CURRENT_DATE()))到 SQL 命令中。
正如 Jiri Semmler 所說,您想要做的是 SQL 而不是 Yii。
您所需要做的就是找到您感興趣的時間段內的記錄數,并將其除以該時間段的天數。
它可以是這樣的
// Define period
$timeFrom = '2018-11-30';
$timeTo = '2018-12-02';
// Number of days for the period
$days = date_diff(date_create($timeFrom), date_create($timeTo))->format("%a");
// Query count of records between dates
$q = new \yii\db\Query();
$total = $q->from('order')
->where(['between', 'created_at', $timeFrom, $timeTo])
->count();
// Find average records per day
$average = $total / $days;
如果你有Order模型類:
// Query count of records between dates
$total = Order::find()
->where(['between', 'created_at', $timeFrom, $timeTo])
->count();

TA貢獻1810條經驗 獲得超4個贊
我相信這比 Yii2 更多與 SQL 相關的問題。你需要的是(如果我理解正確的話):
統計從年初到今天有多少天
計算所有行數
將這些數字相除即可得到平均值。
我已經嘗試過了,效果很好
SELECT
count(*) / (select round((unix_timestamp() - (select min(created_at) from table)) / 86400))
from table;
回到 Yii2:我相信你必須手動構建這個查詢
\Yii::$app->db->createCommand()
- 2 回答
- 0 關注
- 165 瀏覽
添加回答
舉報