Ich sammle regelmäßig Metriken für Tabellen von Benutzern, wobei die Größe jedes aggregierten Gruppen-Buckets in der Größenordnung von Zehntausenden liegt. Ich würde gerne einige Beispielbenutzer für jeden Bucket bereitstellen können, aber keine GROUP_CONCAT
mit einer Länge von Tausenden oder möglicherweise Millionen.Verwendung von GROUP_CONCAT und/oder NEST, aber Begrenzung der Anzahl der Elemente im Ergebnis
2
A
Antwort
2
Dies ist mit Legacy-SQL-Aggregatfunktionen nicht möglich, aber es ist möglich, mit standard SQL und seinen Aggregatfunktionen STRING_AGG
(entspricht GROUP_CONCAT
in Legacy-SQL) und ARRAY_AGG
(entspricht NEST
). Beide Funktionen unterstützen optional LIMIT
Klausel wie in "Using LIMIT with aggregate functions" dokumentiert.
Zum Beispiel:
select string_agg(x LIMIT 2)
from unnest(['hello', 'world!', 'foo', 'bar', 'baz']) x
kehrt 'hello,world!'
Zeichenfolge und
select array_agg(x LIMIT 2)
from unnest(['hello', 'world!', 'foo', 'bar', 'baz']) x
kehrt ['hello', 'world!']
Array.
0
Für Legacy SQL
SELECT GROUP_CONCAT_UNQUOTED(x) FROM (
SELECT x FROM
(SELECT 'hello' AS x),
(SELECT 'world!' AS x),
(SELECT 'foo' AS x),
(SELECT 'bar' AS x),
(SELECT 'baz' AS x),
LIMIT 2
)
und
SELECT NEST(x) FROM (
SELECT x FROM
(SELECT 'hello' AS x),
(SELECT 'world!' AS x),
(SELECT 'foo' AS x),
(SELECT 'bar' AS x),
(SELECT 'baz' AS x),
LIMIT 2
)
sie jeweils 'hello,world!'
String und ['hello', 'world!']
"array" return
unten ist beispielsweise mit GROUP BY
SELECT id, GROUP_CONCAT_UNQUOTED(x) FROM (
SELECT id, x, ROW_NUMBER() OVER(PARTITION BY id) AS num FROM
(SELECT 1 AS id, 'hello' AS x),
(SELECT 1 AS id, 'world!' AS x),
(SELECT 1 AS id, 'foo' AS x),
(SELECT 1 AS id, 'bar' AS x),
(SELECT 1 AS id, 'baz' AS x),
(SELECT 2 AS id, 'hello2' AS x),
(SELECT 2 AS id, 'world2!' AS x),
(SELECT 2 AS id, 'foo2' AS x),
(SELECT 2 AS id, 'bar2' AS x),
(SELECT 2 AS id, 'baz2' AS x),
)
WHERE num < 3
GROUP BY id
Verwandte Themen
- 1. Begrenzung der Anzahl der Datensätze von mysqldump?
- 2. Mit Ergebnis von Group_Concat
- 3. WP7 Begrenzung der Anzahl der MediaElements
- 4. log4j2 - Begrenzung der Anzahl der Protokolldateien
- 5. Begrenzung der Anzahl der Objekte in NSArrayController
- 6. xlwt Begrenzung der Anzahl der Zeilen
- 7. Begrenzung der Anzahl der von der JVM verwendeten Threads
- 8. MYSQL Anzahl der Suchergebnisse mit group_concat
- 9. Bash: Begrenzung der Anzahl gleichzeitiger Jobs?
- 10. Gibt es eine Begrenzung der Anzahl der HTML-Elemente, die der Browser ohne Probleme anzeigen kann?
- 11. Anzahl der Elemente im Abfrage-Set ohne Anzahl zählen()
- 12. Begrenzung der CPU-Anzahl für einen Benutzer
- 13. Pandas HDF Begrenzung der Anzahl der Zeilen der CSV-Datei
- 14. Die Anzahl der Elemente im Array zählen
- 15. Bindung an Anzahl der Elemente im DataContext
- 16. mod_rewrite Anzahl der Parameter/Rückreferenzierungen Begrenzung
- 17. Python: Begrenzung der String-Länge bei der Verwendung von isalpha
- 18. Select2 jquery plugin zeige Anzahl der ausgewählten Elemente im Ergebnis anstelle der Tags
- 19. Begrenzung der Anzahl generischer Parameter in .NET?
- 20. über die Anzahl der Datei-Deskriptoren Begrenzung
- 21. Begrenzung der gleichzeitigen Threads gleich der Anzahl der Prozessoren?
- 22. Anzahl der Einsen im Ergebnis von 11 berechnen^
- 23. Verwendung von Nest QueryContainer
- 24. Notwendigkeit der Begrenzung Schaltfläche Klicks
- 25. PyQt QComboBox Einstellung der Anzahl der sichtbaren Elemente im Dropdown
- 26. Spring Boot - Begrenzung der Anzahl der erstellten Verbindungen
- 27. COUNT Verwendung in GROUP_CONCAT
- 28. WP7 für Schleife zur Begrenzung der Anzahl der Elemente, die zum Listenfeld hinzugefügt werden
- 29. Regulärer Ausdruck zur Begrenzung der Anzahl der Zeichen auf 10
- 30. Akteur-Modellmuster: Begrenzung der Anzahl der gleichzeitig laufenden Akteure
Diese Lösung funktioniert jedoch nicht mit GROUP BY, das Teil der ursprünglichen Frage war (aber Beispiele zur Vereinfachung haben es weggelassen). –
Beispiel mit 'GROUP BY' hinzugefügt –