SQLite - 确定一周中每一天的平均销售额

时间:2017-08-14 03:17:52

标签: sql sqlite

我正在尝试在SQLite中生成一个查询,在那里我可以确定一年中每个工作日的平均销售额。

作为一个例子,我想说要说

“2017年的平均销售额为400.50美元”

我有一张销售表 - 每行代表您所做的销售。您可以在同一天进行多次销售。这里感兴趣的列:

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

日/月/年是表示星期几/月/年的整数。 DateCreated是一个unix时间戳,表示它创建的日期/时间(显然等于日/月/年)。

PeriodOfTheDay为0或1(白天或夜晚)。您可以在一天内拥有多条记录(通常最多可以有2条记录,但有些人喜欢单独添加所有销售额,因此一天可以有5个或更多)。

我被困的地方

因为你可以在同一天有两个记录(即一天的销售,一个夜间销售,或每个的多个),我不能只按星期几分组(即按星期六分组所有记录)。

这是因为您的销售数量不等于您工作的天数(即我本可以在10个星期六工作,但有30个销售,因此按“星期六”分组将产生30个销售,因为有30个记录存在星期六(有些恰好在同一天分享)

此外,如果我按daycreated,monthcreated,yearcreated进行分组,它会产生x行(其中x是你工作的天数),但是现在意味着我需要将这个结果集返回到后端并且行数。我宁愿在查询中这样做,所以我可以把销售除以你工作的天数。

有人能帮忙吗?

谢谢!

更新

我想我明白了 - 我希望有人告诉我,如果我是对的:

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

这将产生星期六的数字,然后我将其作为内部查询,将销售总额除以此天数。

1 个答案:

答案 0 :(得分: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

这将是关键所以每个月都会有一个单独的星期六。

希望这有助于构建您的查询。