我有一组数据,如下所示,如何返回具有不同set、course_id、exercise_id和test_mode的结果,条件是最长testing_name。非常感谢。
设置 | course_id | 练习_id测试模式测试名称 | >测试计数|||
---|---|---|---|---|---|
A | 5 | 4 | C | 测试(12(||
A | 5 | 4 | C测试(12(和测试(34(3 | ||
A | 5 | 4 | P测试(22( | 2 | |
A | 5 | 4 | B | 5||
A | 3 | 20 | C测试(49(1|||
A | 3 | 15 | |||
B | 5 | 4 | B | 3||
B | 5 | 4 | P测试(33(和测试(87(3 | ||
B | 5 | 4 | P测试(88(1 |
此处使用ROW_NUMBER
:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY Set, course_id, exercise_id, test_mode
ORDER BY LENGTH(testing_name) DESC) rn
-- use LEN() for SQL Server
FROM yourTable
)
SELECT Set, course_id, exercise_id, test_mode, testing_name, testing_count
FROM cte
WHERE rn = 1;