Я сомневаюсь, что я вас правильно понимаю, объяснения не достаточно ясны, но вы можете использовать этот код, чтобы получить номер каждой последней записи uid
с определенной id
CREATE LOCAL TEMPORARY TABLE tmp (
id CHAR(1),
uid VARCHAR,
dt DATE,
storyid CHAR(1),
answerid CHAR(1)
);
--Just some sample data for testing purpose
INSERT INTO tmp VALUES ('1', '1', '2018-05-20', '1', '1');
INSERT INTO tmp VALUES ('2', '1', '2018-05-21', '1', '1');
INSERT INTO tmp VALUES ('1', '1', '2018-05-22', '1', '1');
INSERT INTO tmp VALUES ('4', '2', '2018-05-21', '1', '1');
INSERT INTO tmp VALUES ('5', '2', '2018-05-22', '1', '1');
INSERT INTO tmp VALUES ('6', '3', '2018-05-20', '1', '1');
INSERT INTO tmp VALUES ('7', '4', '2018-05-21', '1', '1');
INSERT INTO tmp VALUES ('8', '4', '2018-05-21', '2', '1');
INSERT INTO tmp VALUES ('1', '4', '2018-05-22', '2', '1');
SELECT
count(*)
, uid
FROM (
SELECT
id
, uid
, dt
, row_number()
OVER (
PARTITION BY uid
ORDER BY dt DESC ) num
FROM tmp
) tt
WHERE num = 1 AND id = '1'
GROUP BY uid;