子查询中的 MySQL COUNT 行

标签 mysql join count subquery

我有这个 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/

相关文章:

python Flask SQLAlchemy 将数据插入 mysql

mysql - 将 Entity Framework 模型与 MySQL 服务器一起使用需要哪些步骤?

sql - 查询表: complex join

php - MySQL:连接两个表,随机选择一行

mysql - 使用 max mysql 连接表

php - MYSQL 选择日期范围内的最大计数

MySQL 使用 INFORMATION_SCHEMA 更新列 - 这可能吗?

php - 内联声明 MySQL 'unknown column'

python - 计算 python 中某个值相对于另一个值聚合的重复出现次数

mysql - 保持表行克隆的有效方法