170 похожих чатов

Всем привет, не могу решить задачу, надо найти разницу в

quantity для key 'last'и 'new', уже долго думаю, помогите пожалуйста.
https://onlinephp.io?s=7VTNTttAEL4j5R3mYCl2CRLlmJBUAVwaKYQqJEUojSrX2ZBVjW1210BUIUFR1UP7BH0KRBW1qAVeYf1G3bUd_Nsf9VD10Dl41zPfzM58s7Orj9yJC6UF13tpYRMoM5hYxp5tMuzYsI_YuuPZrE8RoZvE8dy16QY6wiZSSwsQybqFkc1AMYO1Ehuw1FLMUGuU1RreSIDNAov4IHJkWKFaq4JBiDGF1zFMGTkiW9SKgFCPneABrNRKCwksPRSA-H9Hb-vrPYgVUkZBRWDQaFdJmz0bH6oeHmkScegZNsNsmsGULYOysgS8QtPY9Li7vQXoSNDyQlJLY8vuE72rQ0iOrCDcpYM2OxswMag6J4tWksRpeTDDB0icc-DCmt7b1fUO2M6xqsEStDo9vfus2c6Rt9HcC1zzQJyAxEdtdrf7T2FtL6IqNvQ7re0ONNvtv0C2jY7_Ia4bf0pe6qYykrrkUhRZB5IZh6O11KDIQiZT5a3WajH4FEyDmRNQn-snJnKD0VXQfKtl47ad_WoVEeIQNYGqpUEEMY_YMBgmz0mN1shgxg5ibWTvs4nI0pQvhRomvdQgzjFVtWTUwCE5jFIG6d-gvaLlFipDvQFl_pHf8q_8i_-Oz_xz_w2_4rfA76TS_8A_i_WKXwr1TIBm_Br8c_7JP_MvBOROeJ2FAH7Db_z3_tvAE_wLGSmwXUcxL_m3cqUok6kbJcIMMTXlNCRJzdghoCpY0LBcE-2H1Qw_Urm4mGuFEo1DHdK8DRQ8HCwPMz1R5gNRjH-Yw4sBKYauDFOXTwoeiwICh3o4YUGyeVKCugZDEbegdwFrEiBZKzZL-YHnfYT4BiiFr0TeYd6oLcQINnvowLVEzbRa7bsWHovREcPo_TLMPHMY3FM9_IlPkS3bg1NAFkXZvkv5T-S9_BaRqXdovo2eqYDLyOH0Ow%2C%2C&v=8.2.6

2 ответов

28 просмотров

Привет! Для начала, нужно собрать результаты запросов в два разных массива. Затем, после цикла, мы можем вычислить разницу для каждого устройства, если есть таковые. Я модифицировал твой код для того, чтобы это реализовать: public static function getCountUsersGroupByDevice( Client $client, int $siteId, int $audienceId, int $interval ): array { $doubleInterval = $interval * 2; $sql = SELECT device as device, uniq(uid) as quantity, 'last' as key FROM event_stats WHERE siteId = $siteId AND has(audiences, $audienceId) AND timestamp BETWEEN now() - INTERVAL $doubleInterval DAY AND now() - INTERVAL $interval DAY GROUP BY device UNION ALL SELECT device as device, uniq(uid) as quantity, 'new' as key FROM event_stats WHERE siteId = $siteId AND has(audiences, $audienceId) AND timestamp > now() - INTERVAL $interval DAY GROUP BY device; try { $state = $client->select($sql); } catch (\Exception $exception) { Log::error($exception); return []; } $dataSetLength = count($state->rows()); $newData = []; $lastData = []; $result = [ 'title' => 'Количество пользователей сгруппированных по устройствам', 'type' => 'table' ]; for ($i = 0; $i < $dataSetLength; $i++) { $device = $state->rows()[$i][0]; $quantity = $state->rows()[$i][1]; $key = $state->rows()[$i][2]; if ($key == 'new') { $newData[$device] = $quantity; } else { $lastData[$device] = $quantity; } } foreach ($newData as $device => $quantity) { $diff = $quantity - ($lastData[$device] ?? 0); $result[] = [ 'data' => [ 'title' => $device, 'type' => MetricTemplates::Uplift->value, 'data' => [$diff], ], ]; } return $result; } Затестить не могу по понятным причинам Отпишись или подходит решение

Владислав-Саросек Автор вопроса

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта