Поскольку id - это ключ вашего раздела, ваши данные на самом деле сортируются по токену id, а не по самим значениям:
cqlsh:testid> SELECT id,n,p,q,token(id) FROM table;
id | n | p | q | system.token(id)
----+---+---+------+----------------------
5 | 1 | 2 | 4 | -7509452495886106294
10 | 2 | 4 | 3 | -6715243485458697746
11 | 1 | 2 | null | -4156302194539278891
Из-за этого у вас нет никакого контроля над тем, как сортируется ключ раздела.
Чтобы отсортировать данные по идентификатору, вам нужно сделать id столбцом кластеризации, а не ключом раздела. Тем не менее, вашим данным все равно потребуется ключ раздела, и он всегда будет отсортирован по токену.
Если вы решили сделать id столбцом кластеризации, вам нужно будет указать, что вы хотите, чтобы в вашем порядке по убыванию выглядел оператор
CREATE TABLE clusterTable (
... partition type, //partition key with a type to be specified
... id INT,
... n INT,
... p INT,
... q INT,
... PRIMARY KEY((partition),id))
... WITH CLUSTERING ORDER BY (id DESC);
Эта ссылка очень полезна для обсуждения порядка работы в Кассандре: https://www.datastax.com/dev/blog/we-shall-have-order