Mysql 使用两个排序值对Group by进行SQL查询,并对相等的值进行计数

Mysql 使用两个排序值对Group by进行SQL查询,并对相等的值进行计数,mysql,sql,Mysql,Sql,例如,我有以下表格数据: Date branch sale profit Jan 1, 2014 A 10 5 Jan 2, 2014 A 11 6 Jan 3, 2014 A 20 9 Feb 1, 2014 A 11 4 Feb 2, 2014 B

例如,我有以下表格数据:

    Date          branch     sale     profit
    Jan 1, 2014    A         10          5
    Jan 2, 2014    A         11          6
    Jan 3, 2014    A         20          9
    Feb 1, 2014    A         11          4
    Feb 2, 2014    B         20          10
    Feb 3, 2014    C         12          6
    Mar 1, 2014    A         25          15
    Mar 2, 2014    B         60          30
    Mar 3, 2014    B         40          20
我已成功地将这些数据按月分组,并将销售额和利润相加。 请参见下面的我的sql查询

SELECT DATE_FORMAT(date,'%b') as date, SUM(sale) as sale, SUM(profit) as profit FROM sales_report GROUP BY MONTH(date) ORDER BY MONTH(date)
我在下面有一个结果值

Date    branch     sale     profit
Jan      A         41          20
Feb      A         43          20
Mar      A         125         65
我想在这里实现的是选择具有最新日期的分支,并按升序保留月份 我还想添加字段来计算分支。我希望这些结果如下。请帮忙

Date    branch     sale     profit   Count
Jan      A         41          20      1
Feb      C         43          20      3
Mar      B         125         65      2

我想您希望计数列使用
count(distinct)
。对于分支,可以使用
group\u concat()
/
子字符串\u index()


您的表格中包含的数据类似于
1月1日、2月1日、3月1日
,而您的结果是按月份分组的
1月、2月、3日
。您的查询只是按日期分组,而不是具体按月份分组。你确定你提供的数据和预期的输出是正确的吗?事实上,我只是把它作为一个示例,如果你想要这是我的原始sql供你参考,选择日期\格式(日期,'%b')作为日期,总和(销售)作为销售,总和(利润)作为销售利润\报告组按月(日期)按月(日期)订单按月(日期)工作!。非常感谢你@戈登·林诺夫
SELECT year(date), month(date),
       substring_index(group_concat(branch order by date desc), ',', 1) as last_branch,
       SUM(sale) as sale, SUM(profit) as profit,
       count(distinct branch) as NumBranches
FROM sales_report
GROUP BY year(date), month(date)
ORDER BY min(date);