Sco*_*rta 2 sql select where-clause clickhouse
我的表有一个名为Speed(整数) 的列,我需要选择大于该列表中 25%、50%...值的值。
样本数据:
+-------+
| Speed |
+-------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+-------+
Run Code Online (Sandbox Code Playgroud)
期望的输出:
+--------+
| OUTPUT |
+--------+
| 3 |
| 5 |
| 8 |
+--------+
Run Code Online (Sandbox Code Playgroud)
解释:
我认为我应该对数据进行排序,并执行以下操作:
SELECT speed
FROM my_table
WHERE speed IN (ROUND(0.25 * <total_row>), ROUND(0.50 * <total_row>),..)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何获得该<total_row>参考。如果我可以SELECT COUNT(speed) AS total_row,并稍后使用它,那就太好了。
太感谢了。
create table Speed Engine=Memory \nas select number+1 X from numbers(10);\n\nSELECT quantilesExact(0.25, 0.5, 0.75)(X)\nFROM Speed\n\n\xe2\x94\x8c\xe2\x94\x80quantilesExact(0.25, 0.5, 0.75)(X)\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 [3,6,8] \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n\n\nSELECT arrayJoin(quantilesExact(0.25, 0.5, 0.75)(X)) AS q\nFROM Speed\n\n\xe2\x94\x8c\xe2\x94\x80q\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 3 \xe2\x94\x82\n\xe2\x94\x82 6 \xe2\x94\x82\n\xe2\x94\x82 8 \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n\nSELECT arrayJoin(quantilesExact(0.25, 0.499999999999, 0.75)(X)) AS q\nFROM Speed\n\n\xe2\x94\x8c\xe2\x94\x80q\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 3 \xe2\x94\x82\n\xe2\x94\x82 5 \xe2\x94\x82\n\xe2\x94\x82 8 \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\nRun Code Online (Sandbox Code Playgroud)\n\n在 CH 领域,Join 不适用,因为它通常有数十亿行。
\n\ncreate table Speed Engine=MergeTree order by X as select number X from numbers(1000000000);\n\nSELECT quantilesExact(0.25, 0.5, 0.75)(X)\nFROM Speed\n\n\xe2\x94\x8c\xe2\x94\x80quantilesExact(0.25, 0.5, 0.75)(X)\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 [250000000,500000000,750000000] \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n\n1 rows in set. Elapsed: 7.974 sec. Processed 1.00 billion rows,\n\nSELECT quantiles(0.25, 0.5, 0.75)(X)\nFROM Speed\n\n\xe2\x94\x8c\xe2\x94\x80quantiles(0.25, 0.5, 0.75)(X)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 [244782599,500713390.5,751014086.75] \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n\n1 rows in set. Elapsed: 1.274 sec. Processed 1.00 billion rows\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3353 次 |
| 最近记录: |