我有一个SQLite数据库和sales
表,如下所示:
| Id | quantity | dateTime |
------------------------------------
| 1 | 10 | 2019-12-25 12:55 |
| 2 | 05 | 2019-12-30 12:55 |
| 3 | 25 | 2020-08-23 12:55 |
| 4 | 25 | 2020-08-24 12:55 |
| 5 | 56 | 2020-08-25 12:55 |
| 6 | 25 | 2020-08-26 12:55 |
| 7 | 12 | 2020-08-27 12:55 |
| 8 | 30 | 2020-08-28 12:55 |
| 9 | 40 | 2020-08-29 12:55 |
我需要获取本周数据(周一到周日)和本年数据(一月到十二月)。因此,如果我传递了今天的日期,我只需要获取按天分组的本周销售数据,如下所示:
如果我传递今天的日期和时间(2020-08-28 13:55),查询应给予如下所示的当前周数据,
Day Sold Items (SUM(quantity))
Monday 20
Tuesday 25
Wednesday 10
Thursday 50
Friday 60
Saturday 0 (If the date hasn't come yet I need to get 0)
Sunday 0
与传递Current Date时的Current Year数据相同,
Month Sold Items (SUM(quantity))
JAN 20
FEB 25
MAR 10
APR 50
MAY 60
JUN 0 (If the month hasn't come yet I need to get 0)
JUL 0
... ...
我尝试在SQLite中使用多个查询,但无法获得所需的结果。以下是我尝试的查询。
Weekly Data (This one gave me past week data also)
SELECT SUM(quantity) as quantity, strftime('%w', dateTime) as Day
From sales
Group by strftime('%w', dateTime)
Monthly Data
SELECT SUM(quantity) as quantity, strftime('%m', dateTime) as Month
From sales
Group by strftime('%m', dateTime)
所以有谁能帮我实现这个目标吗?提前感谢。
3条答案
按热度按时间k3bvogb11#
对于当前周的总计,您需要一个返回日期名称的CTE和另一个返回当前周的星期一的CTE。
您必须交叉连接这些CTE并左连接表以进行聚合:
对于当前年份的总计,您需要一个CTE,它返回月份名称,然后左联接表以进行聚合:
1wnzp6jl2#
您可以使用下面的查询来获取每周日期,我假设everydate只有一个条目,因此没有分组,否则您可以添加group by。
首先,我们将得到基于输入日期的周历(我已经采取了当前日期),然后离开加入日历,以获得所需的出售物品信息。
rur96b6h3#
您可以尝试下面的-DEMO