gpt4 book ai didi

sql - 在Sqlite中按+左外联接分组

转载 作者:行者123 更新时间:2023-12-03 17:52:36 25 4
gpt4 key购买 nike

我正在尝试join 2个表(即使我想带结果的第二个table不匹配)。

因此,我认为我可以使用LEFT OUTER JOIN解决该问题,但是由于某些原因,我无法做到这一点。

这是模式:

entry_types表:

ID          NAME
---------- ----------
1 entry_type1
2 entry_type2


entries表:

ID          VALUE        ENTRY_TYPE_ID         DATE     
---------- ---------- -------------- ----------
1 55.5 1 2016-09-18T17:46:27.398Z
2 84.21 2 2016-09-18T18:41:54.142Z
3 144.5 2 2016-09-19T01:13:51.099Z
4 150.7 1 2016-07-17T19:28:12.026Z


查看上面的架构,我们可以暗示我两个都在9月出现,但在7月中我只有一个 entry_types

所以,我想要什么?


我想始终检索两个 entry_type,当然,将0设置为不存在的 entry_types(如果有的话)。


我正在尝试的以下 entry_type是以下内容:

SELECT et.name as entry_type, 
SUM(CASE WHEN en.value IS NULL THEN 0 ELSE en.value END) as total
FROM entries en
LEFT OUTER JOIN entry_types et
ON en.entry_type_id = et.id
WHERE STRFTIME('%m', en.date) = 'SOME MONTH'
GROUP BY en.entry_type_id


预期结果:

如果我在“ 9月”之前搜索:

NAME            TOTAL
---------- ----------
entry_type1 55.5
entry_type2 228.71


如果我按“七月”搜索:

NAME            TOTAL
---------- ----------
entry_type1 150.7
entry_type2 0


提前致谢。任何帮助将不胜感激。

最佳答案

SELECT t1.name,
COALESCE(t2.value, 0)
FROM entry_types t1
LEFT JOIN
(
SELECT entry_type_id, SUM(value) AS value
FROM entries
WHERE STRFTIME('%m', date) = 'SOME MONTH'
GROUP BY entry_type_id
) t2
ON t1.id = t2.entry_type_id

关于sql - 在Sqlite中按+左外联接分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39565701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com