按月和年分组-SQLite

gtlvzcf8  于 2022-11-15  发布在  SQLite
关注(0)|答案(2)|浏览(213)

我得到了以下SQLite数据库:

我尝试做的是:根据quantidade按月/年分组的所有值求和(例如:2022/08)
我预期的结果按year/month分组:

我的SQL代码:

SELECT 
        data, SUM(quantidade) AS sum
        
        FROM stock_tracking_Negociacao
        WHERE mercado = 'Futuro'
        GROUP BY strftime('%Y', data), strftime('%m', data)

有什么帮助吗?

yptwkmov

yptwkmov1#

我们可以在这里使用SUBSTR()来分离月份和年份,然后聚合:

SELECT SUBSTR(data, 4, 7) AS ym, SUM(quantidade) AS sum
FROM stock_tracking_Negociacao
WHERE mercado = 'Futuro'
GROUP BY 1;

请注意,SQLite没有正式的日期类型,而是将日期存储为字符串。

b1uwtaje

b1uwtaje2#

对于SQLite,唯一有效的基于文本的日期格式是YYYY-mm-dd
当您将任何其他格式与日期函数(如strftime())一起使用时,结果是null,这是代码无法工作的主要原因。
由于您提到数据库中日期的格式为YYYY/mm/dd,您可以将其更新为正确的格式:

UPDATE stock_tracking_Negociacao
SET data = REPLACE(data, '/', '-');

然后,您的查询应该是:

SELECT strftime('%Y-%m', data) AS year_month, 
       SUM(quantidade) AS sum
FROM stock_tracking_Negociacao
WHERE mercado = 'Futuro'
GROUP BY year_month;

相关问题