gpt4 book ai didi

mysql - 仅使用 1 个 group by 子句重写查询

转载 作者:行者123 更新时间:2023-11-29 22:24:37 26 4
gpt4 key购买 nike

下面的查询将产生类似的事后总和

SELECT
tblPost.Post,
SUM(tblPost.LikeCount),
CASE WHEN tblPost.Time
BETWEEN (SELECT
CONVERT(VARCHAR(10),
DATEADD(DD,DATEDIFF(DD 0,GETDATE()),-60),120)) AND CONVERT(date,GETUTCDATE())
THEN 'Last 60 Days'
ELSE 'More Than 1 Year'
END AS"date type"
FROM tblPost
INNER JOIN tblProfile ON (tblProfile.ID=tblPost.UID)
INNER JOIN tblWatchList ON (tblWatchList.ID=tblProfile.UID)
WHERE dbo.tblPost.Time BETWEEN (SELECT
CONVERT(VARCHAR(10),
DATEADD(DD,DATEDIFF(DD,0,GETDATE()), -60),120))AND CONVERT(date,GETUTCDATE())
GROUP BY tblPost.Post,tblPost.Time

这是我的查询,它工作正常,但我想重写它。我该如何在这里描述它......在我的查询中,我有两个 GROUP BY 子句(tblPost.PosttblPost.Time)和正是在这里我遇到了问题。我想重写此查询,例如仅通过 tblPost.Post

对结果进行分组的方式

请帮助我。

最佳答案

您的 WHERE 子句已经消除了您为 tblPost.Time 提供的两个选项 - 您明确声明您只会检索“过去 60 天”,所以您为什么要在查询中使用整个 CASE 语句?

并且您正在加入甚至没有代表的表。因此,首先清理您的查询,使用一些别名,然后删除不需要的内容:

SELECT P.Post, SUM(P.LikeCount)
FROM dbo.tblPost P
WHERE P.Time BETWEEN (SELECT CONVERT(VARCHAR(10), DATEADD(DD,DATEDIFF(DD,0,GETDATE()), -60),120)) AND CONVERT(date, GETUTCDATE())
GROUP BY P.Post

关于mysql - 仅使用 1 个 group by 子句重写查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30390033/

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