请看一下这个查询:
SELECT DATE(datetime), COUNT(1) as numVisits
FROM ".table_stats."
WHERE type='profile_visit'
AND user_url = '".$_GET['ref']."'
AND id_user='".$_SESSION['user_code']."'
GROUP BY DATE(DATE_SUB(datetime, INTERVAL 1 DAY))
此查询计算每个日期 type 等于'profile_visit'的次数,因此它给我两行(DATE(datetime),numVisits)。这是表table_stats的屏幕截图: 的 Table_Stats
好的,到目前为止,您可以了解每次用户访问该网站时,会在表格中插入一个新元素,其中包含类型 = profile_visit和日期时间字段访问的日期和时间,这就是为什么我使用 GROUP BY DATE(日期时间)来计算每天的访问总数。
复杂的部分,当类型字段等于'click'而 origin 是'imp'时,意味着用户点击特定按钮该页面,我想知道白天点击该按钮的次数(无论是ip),就像我对个人资料访问一样。
当 type 为“click”时,我可以制作两个查询,一个用于了解总访问量(如之前的那个)和另一个类似的 datetime 分组 origin 是'imp'。
问题是,我想在一次调用中进行此操作,以便计算NumVisits行中的日期总访问量,就像我之前所做的那样,并且新行调用NumClick,总点击次数。这就是为什么我不想在我的php服务器上进行更多计算,如果它可能会很好地在sql服务器上进行所有计算。
最后,如果你将这个查询调用到表中:
SELECT DATE( DATETIME ) , COUNT( 1 ) AS numVisits
FROM stats_ram
WHERE TYPE = 'profile_visit'
AND user_url = 'xxx'
AND id_user = '88e91'
GROUP BY DATE( DATE_SUB( DATETIME, INTERVAL 1
DAY ) )
LIMIT 0 , 30
你会得到:
DATE(datetime) numVisits
2011-11-16 7
如何添加另一行,其中总类型=点击AND origin =由DATE(日期时间)生成的???
感谢您的帮助!!!
答案 0 :(得分:3)
SELECT
DATE(DATETIME),
SUM(CASE WHEN type = 'profile_visit' THEN 1 ELSE 0 END) AS numVisits,
SUM(CASE WHEN type = 'click' AND origin = 'imp' THEN 1 ELSE 0 END) numClicks
FROM stats_ram
WHERE user_url = 'xxx'
AND id_user = '88e91'
GROUP BY DATE(DATE_SUB(DATETIME, INTERVAL 1 DAY))
LIMIT 0, 30