0

我有一张表格,我需要从中收集数据,格式如下。

USER_id|| Reason_ID || CALLDATETIME||
18164564          4     2013-02-25 00:05:25
18164564          2     2013-02-24 00:06:30
18164286          8     2013-01-19 15:35:16
18164286          1     2013-02-18 12:31:59

表中还有其他列,但我觉得它们对于这个特定示例无关紧要。所以我需要一个包含 MAX (CALLDATETIME) 的所有 user_id 的列表,但我只需要 1 个 user_id 用于报告。当涉及到 distinct 和 group by 和 order by 语法时,我似乎总是有点困惑。

我看了一个较早的线程,但不太明白他们是如何得到结果的,他们的也是一个 MySQL 示例。

4

2 回答 2

2

如果您需要 reason_ID,您可以GROUP BY作为 CTE 执行,然后稍后加入 reason_id:

WITH max_cte AS
(
  select user_id, MAX(calldatetime) MaxCalldatetime
  from [tablename]
  group by user_id
)
SELECT max_cte.*, [tablename].reason_id
FROM max_cte
JOIN [tablename] 
  ON max_cte.user_id = [tablename].user_id
  AND max_cte.MaxCalldatetime = [tablename].Calldatetime
于 2013-03-01T18:04:55.927 回答
1

像这样的东西应该工作

selct user_id, max(calldatetime) maxcalldatetime
from yourtable
where whatever
group by user_id
于 2013-03-01T17:52:52.680 回答