Попробуйте этот запрос:
SELECT
data.1 AS value,
data.2 AS array,
arrayFilter((x, groupPosition) -> groupPosition != 1 OR x != value, array, arrayEnumerateUniq(array)) AS result
FROM
(
/* test data, where the first item is value to apply the filter, the second one is array */
SELECT arrayJoin([
(1, [2, 1, 4, 1, 1, 3]), /* exclude the first occurrence of 1 */
(2, [2, 1, 4, 1, 1, 3]), /* exclude the first occurrence of 2 */
(3, [2, 1, 4, 1, 1, 3]), /* .. */
(4, [2, 1, 4, 1, 1, 3]),
(5, [2, 1, 4, 1, 1, 3]),
(1, []),
(1, [1]),
(1, [1, 1, 1])
]) AS data
)
/* Result:
┌─value─┬─array─────────┬─result────────┐
│ 1 │ [2,1,4,1,1,3] │ [2,4,1,1,3] │
│ 2 │ [2,1,4,1,1,3] │ [1,4,1,1,3] │
│ 3 │ [2,1,4,1,1,3] │ [2,1,4,1,1] │
│ 4 │ [2,1,4,1,1,3] │ [2,1,1,1,3] │
│ 5 │ [2,1,4,1,1,3] │ [2,1,4,1,1,3] │
│ 1 │ [] │ [] │
│ 1 │ [1] │ [] │
│ 1 │ [1,1,1] │ [1,1] │
└───────┴───────────────┴───────────────┘
*/