题解 | #某乎问答最大连续回答问题天数大于等于3天的用户及其对应等级#
某乎问答最大连续回答问题天数大于等于3天的用户及其对应等级
http://www.nowcoder.com/practice/e080f8a685bc4af3b47749ca3310f1fd
用需要判断是否排序的Col减去ROW_NUMBER排序,然后作为PARTITION条件在窗口函数中计数即可。
SELECT *
FROM
(
SELECT DISTINCT
author_id,
author_level,
COUNT(*) OVER(PARTITION BY author_id, const_col) AS days_cnt
FROM
(
SELECT
*,
DAY(answer_date) - ROW_NUMBER() OVER(PARTITION BY author_id ORDER BY answer_date) AS const_col
FROM
(
SELECT DISTINCT
author_id,
answer_date,
author_level
FROM author_tb au
JOIN answer_tb an USING (author_id)
) AS t1
) AS t2
) AS t3
WHERE days_cnt >= 3