【问题标题】:GROUP_CONCAT or SUM with Count(*) inside and GROUP BY in MySQLGROUP_CONCAT 或 SUM,里面有 Count(*) 和 MySQL 中的 GROUP BY
【发布时间】:2013-12-19 15:39:08
【问题描述】:

我目前有这个查询:

SELECT ((count(*) DIV 20) * 10) AS money_earned 
FROM ticket 
WHERE 
    closed_by = 269 AND 
    status = 1 AND
    closed_index >= TO_DAYS("2012/01/01") AND closed_index <= TO_DAYS("2013/01/01")
GROUP BY closed_index;

它产生这个:

money_earned

60
50
30
20
20

有没有办法对这些行求和,或者将结果行连接成一个字符串。我尝试使用 GROUP_CONCAT,但收到“无效使用 Group 函数”错误。

相反,如果可能,我想在单个查询中产生以下内容:

money_earned
180

money_earned
60,50,30,20,20

【问题讨论】:

    标签: mysql sql group-by concat group-concat


    【解决方案1】:

    您可以将查询用作子查询:

    select sum(money_earned), group_concat(money_earned)
    from (SELECT ((count(*) DIV 20) * 10) AS money_earned 
          FROM ticket 
          WHERE closed_by = 269 AND 
                status = 1 AND
                closed_index >= TO_DAYS("2012/01/01") AND closed_index <= TO_DAYS("2013/01/01")
          GROUP BY closed_index
         ) tci;
    

    由于四舍五入,我会谨慎地在单个查询中执行此操作。

    【讨论】:

    • 哇,太棒了,在我将此答案标记为答案之前(呵呵),您介意在该查询末尾解释 tci 的作用吗?我确定我可以查一下,但我相信这对人们了解它非常有益。
    • @SeanLarkin 。 . .这称为表别名。您可以使用它来识别列。大多数数据库(但不是全部)在 from 子句中的子查询之后需要一个表别名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    相关资源
    最近更新 更多