Powiedz, że mam prostą tabelę z 3 polami: "miejsce", "użytkownik" i "bajty". Załóżmy, że pod jakimś filtrem chcę pogrupować według "miejsca" i dla każdego "miejsca", aby zsumować wszystkie bajty dla tego miejsca i losowo wybrać użytkownika dla tego miejsca (jednolicie od wszystkich użytkowników, którzy pasują do tego miejsca). "gdzie" filtr i odpowiednie "miejsce"). Jeśli byłaby funkcja "wybierz losowo z", zrobiłbym:Losowy agregator SQL
SELECT place, SUM(bytes), SELECT_AT_RANDOM(user) WHERE .... GROUP BY place;
... ale nie mogłem znaleźć takiej funkcji agregującej. Czy czegoś brakuje? Jaki może być dobry sposób na osiągnięcie tego?
Co to jest RDBMS? –
Nie jestem świadomy żadnego pojedynczego RDBMS z taką funkcją. Większość musi użyć jakiegoś innego mechanizmu, aby osiągnąć ten sam wynik * (Takie jak przypisanie losowej liczby do każdego użytkownika, a następnie wybranie użytkownika o najwyższej wartości). * Ale każdy będzie miał inne możliwości, a każdy będzie działał inaczej. To naprawdę jest pytanie specyficzne dla RDBMS. – MatBailie
Jeśli używasz MySQL, po prostu napisz nieprawidłowy "GROUP BY" (np. Nie stosuj agregatu na użytkownika) i wybierze on wiersz losowo. –