2017-08-14 52 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