【问题标题】:How to count total row on MySQL based upon month and year如何根据月份和年份计算 MySQL 上的总行数
【发布时间】:2020-03-06 19:27:52
【问题描述】:

我的数据库表以这种方式包含值 IMAGE FOR TABLE DATA

我想追踪在特定月份和年份中使用过多次的同一电子邮件。 在上述场景中,多次重复的电子邮件是 sandeshphuya@gmail.comjes@gmail.comramu@gmail.com 不同月份。 我想在每个月和每个年跟踪客户的电子邮件重复。

我现在使用的查询是

SELECT DATE_FORMAT(booked_on, '%Y-%m') as monthYear, email,
COUNT(*) AS 'Count'
FROM 'tablename'
GROUP BY email,DATE_FORMAT(booked_on, '%Y-%m') HAVING COUNT(*) > 1 ORDER BY `booked_on`;

GROUP BY 电子邮件用于生成重复电子邮件,GROUP BY DATE_FORMAT(booked_on, '%Y'-%m') 用于跟踪每个月/年重复的电子邮件总数。

这会将数据打印为

IMAGE FOR SELECT QUERY

我如何追踪下个月和下一年的总重复电子邮件?预期结果是

RESULT EXPECTED

【问题讨论】:

    标签: mysql database select group-by count


    【解决方案1】:

    您可以通过以下方式将您的查询用作新组的子查询:

    select sub.monthYear,count(*)
    from
        (SELECT DATE_FORMAT(booked_on, '%Y-%m') as monthYear, 
                email,
                COUNT(*) AS 'Count'
         FROM 'tablename'
         GROUP BY email,DATE_FORMAT(booked_on, '%Y-%m') 
                  HAVING COUNT(*) > 1 
         ORDER BY `booked_on`) as sub
    GROUP BY sub.monthYear
    

    【讨论】:

    • 但是你可能需要SUM() 而不是COUNT() 在你的第一行?
    • @Luuk,不,如果你使用 sum(Count),你会得到重复的总数,但是 OP 需要重复的电子邮件数,所以子查询中的行数
    • 好的,我从问题中不清楚那部分......(我这边的语言问题?)
    • Luuk 我使用了我的旧查询并手动计算了行数,显示为 9,当我使用@nacho 提供的查询时,它显示总计为 9。所以 nacho 提供的查询是正确的。
    猜你喜欢
    • 2022-11-29
    • 2012-06-06
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多