Мне нужна небольшая помощь для мозгового штурма по запросу. У меня есть таблица продаж, которая имеет две строки (в день) для каждого местоположения ресторана. Одна строка - продажи AM, а другая - продажи PM. Продажи AM - буквально только продажи AM, однако продажи PM - комбинация продаж AM и продаж PM. Таким образом, чтобы извлечь продажи PM, вычтите из нее строку продаж AM.
---------------------------------------------------------
date | id | meridiem | daily_sales | cover_counts |
---------------------------------------------------------
2012-03-22 |103 | AM | 2956.32 | 175 |
2012-03-22 |103 | PM | 12124.62 | 484 |
---------------------------------------------------------
У меня есть запрос для расчета прогнозируемого обеда на одного человека в среднем (по продажам AM), и он отлично работает. Он в основном извлекает первые четыре недели из последних 6 недель данных о продажах и усредняет их. (Примечание: средний показатель на человека рассчитывается путем деления продаж на обложки).
$statement = "SELECT directory.location, ROUND((SUM(sales.daily_sales / sales.cover_counts) / 4), 2) AS lppa
FROM t_directory directory
LEFT JOIN t_sales sales
ON sales.site_id = directory.site_id
AND DAYOFWEEK(sales.business_date) = DAYOFWEEK(:date1)
AND sales.business_date < DATE_SUB(:date2, INTERVAL 14 DAY)
AND sales.business_date >= DATE_SUB(:date3, INTERVAL 42 DAY)
AND sales.meridiem = 'AM'
WHERE directory.active = 1
GROUP BY directory.site_id
ORDER BY directory.site_id ASC
LIMIT :totalLocations";
$statementHandle = $this->dbHandle->prepare($statement);
$statementHandle->bindValue(':date1', $this->date, PDO::PARAM_STR);
$statementHandle->bindValue(':date2', $this->date, PDO::PARAM_STR);
$statementHandle->bindValue(':date3', $this->date, PDO::PARAM_STR);
$statementHandle->bindValue(':totalLocations', $this->totalLocations, PDO::PARAM_INT);
$statementHandle->execute();
$lppa = $statementHandle->fetchAll(PDO::FETCH_ASSOC);
Теперь я хочу посчитать обед на человека в среднем. Чтобы сделать это, я должен был бы вычесть продажи AM и покрытия из продаж PM и покрытия, соответственно, прежде чем какая-либо математика будет иметь место. Есть ли несколько простой способ реализовать все это в одном запросе? Очевидно, я могу сделать это с помощью PHP, но мне просто любопытно, как это можно сделать в запросе. Любая помощь или понимание будет принята с благодарностью. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.