Что действительно ДЕЛИТ 1 средним?

Для пары курсоров, где общее количество строк в наборе результатов сразу требуется после первой ВЫБОРКИ, (после некоторых эмпирических) я придумал запрос ниже

SELECT
 col_a,
 col_b,
 col_c,
 COUNT(*) OVER( PARTITION BY 1 ) AS rows_in_result
FROM 
 myTable JOIN theirTable ON
 myTable.col_a = theirTable.col_z
GROUP BY
 col_a, col_b, col_c
ORDER BY 
 col_b

Теперь, когда вывод запроса является X строками, rows_in_result отражает это точно.

  • Что действительно ДЕЛИТ 1 средним?
    • Я думаю, что это, вероятно, говорит базе данных делить результаты в части 1 строки каждый
7
задан 2 revs, 2 users 100% 3 September 2012 в 15:01
поделиться

1 ответ

Это необычное использование PARTITION BY. Что он делает, так это помещает все в один и тот же раздел, так что если запрос возвращает всего 123 строки, тогда значение rows_in_result в каждой строке будет 123 (как следует из его псевдонима).

Таким образом, это эквивалентно более краткому:

COUNT(*) OVER ()
12
ответ дан 6 December 2019 в 15:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: