【问题标题】:MySQL aggregationMySQL 聚合
【发布时间】:2014-07-01 06:56:58
【问题描述】:

大家好,我正在尝试汇总客户正在执行的搜索次数。我目前有这个工作1天。我还想为该周、月、年和总计的搜索添加一列

    USE live_travelcoglog; 
    SELECT lu.Name, lu.UID, IFNULL(l.AgentId, 'CP Total') AS "CP", COUNT(*) AS   "DateTotal", MAX(l.Submitted) AS "LastSearchTime" 
    FROM logs l INNER JOIN live_travelcog.users lu ON l.ChannelPartnerId = lu.CustId 
    WHERE Submitted BETWEEN '2014-04-23 00:00:00' AND '2014-04-23 23:59:59' 
    AND l.MessageType = 'COG_HotelAvail_RS' 
    GROUP BY lu.Name, l.AgentId ASC WITH ROLLUP;

现在我可以针对我所追求的不同值运行查询,但我确信有一种更好的方法可以将它们全部组合在一起。如果有人能指出我正确的方向,将不胜感激。

谢谢

达兹

【问题讨论】:

  • 问题是什么?没有问题。
  • @mpm - “我还想在一个列中搜索该周、月、年和总计”,这不是一个问题,但很明显他在问什么。

标签: mysql aggregation


【解决方案1】:

这就是你要找的东西吗?

USE live_travelcoglog; 
SELECT
    lu.Name,
    lu.UID,
    IFNULL(l.AgentId, 'CP Total') AS "CP",
    SUM(Submitted BETWEEN '2014-04-23 00:00:00' AND '2014-04-23 23:59:59') AS DateTotal,
    SUM(Submitted BETWEEN '2014-04-17 00:00:00' AND '2014-04-23 23:59:59') AS WeekTotal,
    SUM(Submitted BETWEEN '2014-04-01 00:00:00' AND '2014-04-23 23:59:59') AS MonthTotal,
    MAX(l.Submitted) AS "LastSearchTime" 
FROM logs l
INNER JOIN live_travelcog.users lu
    ON l.ChannelPartnerId = lu.CustId 
WHERE
    l.MessageType = 'COG_HotelAvail_RS'
GROUP BY
    lu.Name,
    l.AgentId ASC
WITH ROLLUP;

【讨论】:

  • 谢谢,当有人这样做时,它是如此清晰。从来没有想过将日期移动到选择中。
猜你喜欢
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
  • 2018-04-11
  • 2013-02-13
相关资源
最近更新 更多