我經常聚合用戶表的度量標準,其中每個聚合組存儲桶的大小爲數以萬計。我希望能夠爲每個存儲桶提供幾個示例用戶,但不是長度爲數千或可能爲數百萬的GROUP_CONCAT
。如何使用GROUP_CONCAT和/或NEST但限制結果中元素的數量
2
A
回答
2
這是不可能與傳統的SQL聚合函數,但它是可能的standard SQL及其聚合函數STRING_AGG
(相當於GROUP_CONCAT
在傳統SQL)和ARRAY_AGG
(相當於NEST
)。這兩種功能均支持「Using LIMIT with aggregate functions」中所述的可選LIMIT
子句。
例如:
select string_agg(x LIMIT 2)
from unnest(['hello', 'world!', 'foo', 'bar', 'baz']) x
返回'hello,world!'
串,和
select array_agg(x LIMIT 2)
from unnest(['hello', 'world!', 'foo', 'bar', 'baz']) x
['hello', 'world!']
返回陣列。
0
對於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
)
和
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
)
它們分別返回'hello,world!'
串和['hello', 'world!']
「陣列」
是例如用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
相關問題
- 1. 在GROUP_CONCAT()或INNER JOIN上限制結果
- 2. 使用preg_match_all限制結果數量PHP
- 3. imap_sort限制結果數量?
- 4. GROUP_CONCAT或替代結果
- 5. PHP:我如何限制數組中結果的數量
- 6. Angular 2:如何限制ng2-completer中搜索結果的數量?
- 7. 如何限制Magento中的結果數量?
- 8. 如何限制postgreSQL中特定列的結果數量?
- 9. 如何在FHIR中限制數量元素的單位類型
- 10. 如何限制CQ5中多字段元素的數量?
- 11. mysqli的查詢結果正確數量的元素,但空值
- 12. 限制ASP.NET ListView的結果數量
- 13. 限制json結果的數量 - Rails API
- 14. 限制Get-ChildItem結果的數量
- 15. 休眠限制的結果數量,但檢查更多
- 16. 限制行數但增加,如果結果的值等於
- 17. 如何限制數據庫查詢結果的數量?
- 18. GROUP_CONCAT但限制獲得多個行
- 19. SQLite3並限制結果數量
- 20. 將分頁:結果數量限制
- 21. 使用API 1.1的Twitter用戶搜索:限制結果和分頁的數量
- 22. Flex列表限制元素數量
- 23. 使用計數限制查詢結果
- 24. 如何限制geopy中geolocator.geocode()的結果?
- 25. 如何限制PagingAndSortingRepository @Query中的結果?
- 26. 你如何限制ngrep結果的數量?
- 27. 如何限制我獲得的結果數量?
- 28. 如何限制從grep返回的結果數量?
- 29. 如何使用jQuery限制表記錄的搜索結果數量?
- 30. 如何限制爲mongo db使用Java驅動程序時的結果數量?
但是,這個解決方案不適用於作爲原始問題一部分的GROUP BY(但爲了簡化,示例省略了它)。 –
添加了「GROUP BY」示例 –