2017-08-14 42 views
0

我想在SQLite中生成一個查詢,我可以確定每年在每個工作日的平均銷售量。SQLite - 確定每週的平均銷售量

舉個例子,我想說想說

「星期一的平均銷售額爲$ 400.50,2017年」

我有一個銷售表 - 每一行代表你做銷售。您可以在同一天有多個銷售。在這裏感興趣的列:

Id, SalesTotal, DayCreated, MonthCreated, YearCreated, CreationDate, PeriodOfTheDay 

日/月/年是代表一週中的日/月/年的整數。 DateCreated是一個unix時間戳,代表它創建的日期/時間(顯然等於日/月/年)。

PeriodOfTheDay是0或1(白天或晚上)。您可以在特定的一天中有多個記錄(通常最多可以有2個記錄,但有些人喜歡單獨添加所有銷售記錄,因此一天可能有5個或更多記錄)。

當我被困

因爲你可以在同一天兩個記錄(即每天的銷售,一夜銷售,或每多),我不能只通過的天團周(即星期六組所有記錄)。

這是因爲您所做的銷售數量與您工作的天數不相等(即我可以工作10個星期六,但有30個銷售,所以按'星期六'分組會產生30個銷售,因爲存在30條記錄對於星期六(有些恰好在同一天發生)

此外,如果我通過daycreated,monthcreated,yearcrease它工作的意義上它產生x行(其中x是你工作的天數),但現在意味着我需要將此結果集返回到後端並進行計數,我寧願在查詢中這樣做,這樣我就可以將銷售額除以您的工作天數

是否有人會AB樂協助?

謝謝!

UPDATE

我想我得到了它 - 我很想有人告訴我,如果我是正確的:

SELECT COUNT(DISTINCT CAST((julianday((datetime(CreationDate/1000, 'unixepoch', 'localtime'))))/7 AS INT)) 
FROM Sales 
WHERE strftime('%w', datetime(CreationDate/1000, 'unixepoch'), 'localtime') = '6' 
    AND YearCreated = 2017 

這將產生數星期六,然後我會只需將此作爲內部查詢,將銷售總額除以此天數即可。

回答

0

好友,

您可以將您的查詢通過獲取的一天創建或創建日期的週週數的一天。

在MSSQL

DATEPART(WEEK,'2017-08-14') // Will give you week 33 
DATEPART(WEEKDAY,'2017-08-14') // Will give you day 2 

在MySQL

WEEK('2017-08-14') // Will give you week 33 
DAYOFWEEK('2017-08-14') // Will give you day 2 

看這個數字..

Day of Week 
1-Sunday, 2- Monday, 3-Tuesday, 4-Wednesday, 5-Thursday, 6-Saturday 

Week Number 
1 - 53 Weeks in a year 

這將是關鍵,讓您每個月都有一個單獨的星期六。

希望這可以幫助您構建您的查詢。

+0

謝謝@OzLa - 我犯了一個錯誤,我把MySQL我的意思是SqlLIte,但無論如何,我做了你的建議,將它們分組。它產生行(所以不只是一個值),但這些行的總數是我想要的值。問題是,這意味着現在我必須將結果集傳回給PHP來計算記錄,但我真的很想在SQL中獲得總計數。任何想法現在怎麼做?謝謝! – NullHypothesis

+0

您能提供一個虛擬數據和預期輸出來構建查詢嗎?如果可行,我們可以測試您的查詢 – OzLa