Я создаю ранги для разделов моего стола. Разделы выполняются по имени столбца с упорядочением по значению транзакции. Пока я генерирую эти разделы и проверяю счетчик для каждого из рангов, я получаю разные номера в каждом ранге для каждого выполняемого запроса.
select count(*) FROM (
--
-- Sort and ranks the element of RFM
--
SELECT
*,
RANK() OVER (PARTITION BY name ORDER BY date_since_last_trans desc) AS rfmrank_r,
FROM (
SELECT
name,
id_customer,
cust_age,
gender,
DATE_DIFF(entity_max_date, customer_max_date, DAY ) AS date_since_last_trans,
txncnt,
txnval,
txnval / txncnt AS avg_txnval
FROM
(
SELECT
name,
id_customer,
MAX(cust_age) AS cust_age,
COALESCE(APPROX_TOP_COUNT(cust_gender,1)[OFFSET(0)].VALUE, MAX(cust_gender)) AS gender,
MAX(date_date) AS customer_max_date,
(SELECT MAX(date_date) FROM xxxxx) AS entity_max_date,
COUNT(purchase_amount) AS txncnt,
SUM(purchase_amount) AS txnval
FROM
xxxxx
WHERE
date_date > (
SELECT
DATE_SUB(MAX(date_date), INTERVAL 24 MONTH) AS max_date
FROM
xxxxx)
AND cust_age >= 15
AND cust_gender IN ('M','F')
GROUP BY
name,
id_customer
)
)
)
group by rfmrank_r
За 1-й пробег я получаю
Row f0
1 3970
2 3017
3 2116
4 2118
За 2-й забег я получаю
Row f0
1 4060
2 3233
3 2260
4 2145
Что можно сделать, если мне нужно получить одинаковое количество разделов, получающих одинаковое ранжирование для каждого прогона
Редактировать:
Извините за размывание полей
Это вывод поля `` `запрос для получения этого столбца````