mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-18 16:27:13 +00:00
[improvement][headless]Expression replacement logic supports more complex sql.
This commit is contained in:
@@ -111,4 +111,18 @@ public class TranslatorTest extends BaseTest {
|
||||
executeSql(explain.getQuerySQL());
|
||||
}
|
||||
|
||||
@Test
|
||||
@SetSystemProperty(key = "s2.test", value = "true")
|
||||
public void testSql_subquery() throws Exception {
|
||||
String sql = new String(
|
||||
Files.readAllBytes(
|
||||
Paths.get(ClassLoader.getSystemResource("sql/testSubquery.sql").toURI())),
|
||||
StandardCharsets.UTF_8);
|
||||
SemanticTranslateResp explain = semanticLayerService
|
||||
.translate(QueryReqBuilder.buildS2SQLReq(sql, dataSetId), User.getDefaultUser());
|
||||
assertNotNull(explain);
|
||||
assertNotNull(explain.getQuerySQL());
|
||||
executeSql(explain.getQuerySQL());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
27
launchers/standalone/src/test/resources/sql/testSubquery.sql
Normal file
27
launchers/standalone/src/test/resources/sql/testSubquery.sql
Normal file
@@ -0,0 +1,27 @@
|
||||
WITH
|
||||
_average_stay_duration_ AS (
|
||||
SELECT
|
||||
AVG(停留时长) AS _avg_duration_
|
||||
FROM
|
||||
超音数数据集
|
||||
)
|
||||
SELECT
|
||||
用户名,
|
||||
SUM(停留时长) AS _total_stay_duration_
|
||||
FROM
|
||||
超音数数据集
|
||||
GROUP BY
|
||||
用户名
|
||||
HAVING
|
||||
SUM(停留时长) > (
|
||||
SELECT
|
||||
_avg_duration_ * 1.5
|
||||
FROM
|
||||
_average_stay_duration_
|
||||
)
|
||||
OR SUM(停留时长) < (
|
||||
SELECT
|
||||
_avg_duration_ * 0.5
|
||||
FROM
|
||||
_average_stay_duration_
|
||||
)
|
||||
Reference in New Issue
Block a user