[improvement][headless]Expression replacement logic supports more complex sql.
Some checks failed
supersonic CentOS CI / build (21) (push) Has been cancelled
supersonic mac CI / build (21) (push) Has been cancelled
supersonic ubuntu CI / build (21) (push) Has been cancelled
supersonic windows CI / build (21) (push) Has been cancelled

This commit is contained in:
jerryjzhang
2025-01-05 16:09:42 +08:00
parent 6fcfdc15e1
commit 4e653c1fb1
6 changed files with 59 additions and 8 deletions

View File

@@ -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());
}
}

View 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_
)