У меня есть следующий SQL:
select Username,
COUNT(DISTINCT Message) as "Count",
AVG(WordCount) as "Average",
RAND(Message) //Essentially what I want to do
from Messages
group by Username
order by "Count" desc
Мои две функции агрегирования в виде столбцов - это Count и Average, что очевидно.Я хочу также вернуть случайную строку из каждой группы из столбца «Сообщение».
Я написал этот запрос в Linq2SQL, однако он не поддерживает случайные числа.
Мне кажется, мне нужно создать собственную функцию агрегирования, но они кажутся чрезмерными, и я хочу знать, есть ли более простой способ, прежде чем я попробую это сделать.Я бы попробовал функцию агрегации CLR, но тогда база данных не была бы так легко переносима между экземплярами из-за их природы dll.
Я также знаю, что использование случайных чисел в строке в SQL немного многословнотакже, но я не могу найти способ использовать их в своей группе по запросу.
Я видел идею Марка Гравелла о случайных строках здесь: Случайная строка от Linq до Sql Однако его решение тянет в каждом ряду, что я не хочу делать;только группировка (которая на порядки меньше.)