mysql从一列返回不同的值,由另一列返回count

时间:2016-08-18 18:54:30

标签: mysql sql

我有一个名为' 视频'使用以下列:

email(varchar)
time(varchar)
page(varchar)

每次有给定电子邮件的人访问某个页面时,该视图都会有行。

我想返回针对每个电子邮件地址显示的结果,他们访问过至少一个页面的天数,以及他们访问过多少个不同页面的计数,而不考虑日期。

我的一个问题可能是时间存储为varchar。以下是时间格式的示例。

2016-01-25T14:36

2 个答案:

答案 0 :(得分:2)

使用STR_TO_DATE提取和解释time字符串的日期部分。将COUNTDISTINCT关键字一起使用,只计算不同的日期和不同的页面。

SELECT email
     , COUNT(DISTINCT STR_TO_DATE(time, '%Y-%m-%d')) AS visit_days
     , COUNT(DISTINCT page) AS visit_pages
  FROM videos
 GROUP BY email
;

答案 1 :(得分:0)

您可以按天使用组来计算访问次数

select email,  date(time), count(*)
from mytable 
group by email, date(time);

select email,   count(distinct page)
from mytable 
group by email;