[英]Yii2, get an average value from timestamps
我有一個帶有訂單的基本表,其中有一個名為 created_at 的字段,它采用時間戳格式,我想獲得每天創建多少訂單的平均值。
找到了另一個類似的問題,類似於我在下面發布的問題,希望每個人都能理解我想要做什么。
//not working
$q = new \yii\db\Query();
$q->from('shopping_cart');
$total = $q->average('DATEDIFF(`created_at`, CURRENT_DATE())');
我相信與 SQL 相關的問題比 Yii2 更多。 您需要的(如果我理解正確的話)是:
我已經嘗試過了,它工作正常
SELECT
count(*) / (select round((unix_timestamp() - (select min(created_at) from table)) / 86400))
from table;
回到 Yii2:我相信你必須手動構建這個查詢
\Yii::$app->db->createCommand()
$q->average('DATEDIFF('created_at', CURRENT_DATE())');
中的方法average
只需將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
model class:
// Query count of records between dates
$total = Order::find()
->where(['between', 'created_at', $timeFrom, $timeTo])
->count();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.