gpt4 book ai didi

子查询中的 MySQL COUNT 行

转载 作者:行者123 更新时间:2023-11-29 05:25:58 25 4
gpt4 key购买 nike

我有这个 MySQL 语句,它返回我们所有经销商的列表,以及他们拥有的商店总数。我正在努力做到这一点,以便我可以添加根据商店加入日期列返回的其他列。

这是返回经销商(帐户组)列表和分配给帐户组的商店总数/COUNT 的基本语句。

SELECT accountgroup, COUNT(storename) AS TotalAmountOfStores 
FROM accounts
WHERE accountgroup <>''
AND othercode ='Site'
GROUP BY accountgroup

我认为在 SELECT 子查询中使用以下语句会让我拥有这些我想要的额外列。该语句本身有效,但我无法将其作为子查询成功合并到上述语句中。

SELECT COUNT( storename ) AS  '2months'
FROM `accounts`
WHERE joineddate > date_sub(now(), interval 2 month)
AND accountgroup <> ''
AND othercode = 'Site'
GROUP BY accountgroup

这是我认为可行的语句,但我收到错误“#1242 - 子查询返回多于 1 行,这让我感到困惑,因为它应该返回多于一行”:

SELECT accountgroup, COUNT(storename) AS TotalAmountOfStores, 
(SELECT COUNT(storename)
FROM `accounts`
WHERE joineddate > date_sub(now(), interval 2 month) AND accountgroup <>'' AND othercode='Site'
GROUP BY accountgroup ) AS '2months'
FROM accounts
WHERE accountgroup <>''
AND othercode ='Site'
GROUP BY accountgroup

我开始觉得子查询不是正确的方法,并且正在阅读有关 JOIN 的内容。任何人都可以证实这一点,并可能指出我正确的方向吗?

非常感谢任何帮助。提前致谢。

最佳答案

您可以使用 if 求和此条件为真的次数。示例:

SELECT 
accountgroup,
COUNT(storename) AS TotalAmountOfStores,
SUM(
IF(joineddate > date_sub(now(), interval 2 month), 1, 0)
) AS '2months'
FROM accounts
WHERE accountgroup <>''
AND othercode ='Site'
GROUP BY accountgroup

关于子查询中的 MySQL COUNT 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20247487/

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