我需要一個幫助頭腦風暴的查詢。我有一個銷售表,每個餐廳位置有兩行(每天)。一行是AM銷售,另一行是PM銷售。 AM銷售實際上只是AM銷售,然而,PM銷售是AM銷售和PM銷售的組合。因此,爲了提取PM銷售額,您必須從其中減去AM銷售額。MySQL查詢 - 兩行之間的差異
---------------------------------------------------------
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算出任何數學之前從PM銷售額和蓋子中扣除。有沒有一種簡單的方法來實現這一切到一個查詢?我明顯可以用PHP來做到這一點,但我只是很好奇這是如何在查詢中完成的。任何幫助或見解將不勝感激。請讓我知道是否需要更多細節。
@Brett - - (注意康拉德),爲了得到正確的封面,你必須從封面上減去早上的封面o你知道晚上有多少食客... – DRapp 2012-03-22 17:17:58
@DRapp謝謝我會更新,但我只是做了一個faceplam看Andomor的解決方案 – 2012-03-22 17:18:51
我不認爲這是正確的總和。第二個左連接將包含第一個左連接中每一行的重複行。 – Andomar 2012-03-22 17:33:29