如何计算每个用户每天的最后一次登录。
表格与此类似
id name Date
-----------------
1 a 01-Feb-2017
2 a 01-Feb-2017
3 a 01-Feb-2017
4 b 02-Feb-2017
5 b 02-Feb-2017
6 c 04-Feb-2017
7 c 04-Feb-2017
请告诉我.....请看起来很简单,但我被困了
答案 0 :(得分:2)
如何计算每个用户每天的最后一次登录。
按用户(即name
)和每天(即TRUNC( "Date" )
)对结果进行分组,然后获取每组最后一个值,您可以采取最大值:
SELECT name, MAX( "Date" )
FROM your_table
GROUP BY name, TRUNC( "Date" )
我的约会没有时间。
是的,他们这样做。 SQL Developer只是没有显示它。
要么更改NLS_DATE_FORMAT
参数,请参阅this answer。
或alter the oracle session parameter。
或者将输出格式化为字符串:
SELECT name,
TO_CHAR( MAX( "Date" ), 'YYYY-MM-DD HH24:MI:SS' ) AS last_date
FROM your_table
GROUP BY name, TRUNC( "Date" )
答案 1 :(得分:0)
试试这个:
SELECT name, MAX(TO_DATE("Date", 'DD-MM-YYYY')) last_date
FROM
(
SELECT 1 AS id, 'a' AS name, '01-Feb-2017' AS "Date"
FROM dual UNION
SELECT 2, 'a', '01-Feb-2017'
FROM dual UNION
SELECT 3, 'a', '01-Feb-2017'
FROM dual UNION
SELECT 4, 'b', '02-Feb-2017'
FROM dual union
SELECT 5, 'b', '02-Feb-2017'
FROM dual UNION
SELECT 6, 'c', '04-Feb-2017'
FROM dual UNION
SELECT 7, 'c', '04-Feb-2017'
FROM dual
) mytable
GROUP BY name
输出:
NAME LAST_DATE
1 a 01.02.2017 00:00:00
2 c 04.02.2017 00:00:00
3 b 02.02.2017 00:00:00
说明:
您按名称对结果进行分组,您希望是最后一个日期,因此需要最多(日期)。但是你有一个字符串作为日期。首先,您将其转换为日期时间。
如果你想要一个不同的输出,你可以提供给我们......因为目前还不清楚。