我使用kimi、通义灵码(其他没测试)问下面这个问题(为了脱敏,我将表名和字段名均隐藏)
能否生成一个SQL,查询G表,右加入W表,G.id = W.gid,
查询表为:G.type,
G.id AS gid,
W.a AS a,
W.b,
W.c,
W.d,
W.e,同时判断当G.type != 'UNIONType'正常返回,G.type = 'UNIONType'
将G.id聚合同时按照
SUM(W.c) AS c,
MIN(W.d) AS d,
MIN(W.e) AS e将这三项返回
之后通义灵码返回的代码
SELECT
CASE
WHEN G.type != 'UNIONType' THEN G.type
ELSE NULL
END AS type,
CASE
WHEN G.type != 'UNIONType' THEN G.id
ELSE NULL
END AS gid,
CASE
WHEN G.type != 'UNIONType' THEN W.a
ELSE NULL
END AS a,
CASE
WHEN G.type != 'UNIONType' THEN W.b
ELSE NULL
END AS b,
CASE
WHEN G.type != 'UNIONType' THEN W.c
ELSE NULL
END AS c,
CASE
WHEN G.type != 'UNIONType' THEN W.d
ELSE NULL
END AS d,
CASE
WHEN G.type != 'UNIONType' THEN W.e
ELSE NULL
END AS e,
CASE
WHEN G.type = 'UNIONType' THEN G.id
ELSE NULL
END AS union_gid,
SUM(CASE WHEN G.type = 'UNIONType' THEN W.c ELSE 0 END) AS union_c,
MIN(CASE WHEN G.type = 'UNIONType' THEN W.d END) AS union_d,
MIN(CASE WHEN G.type = 'UNIONType' THEN W.e END) AS union_e
FROM
G
RIGHT JOIN
W ON G.id = W.gid
GROUP BY
G.id, G.type, W.a, W.b, W.c, W.d, W.e
HAVING
G.type != 'UNIONType' OR union_gid IS NOT NULL;
然后调用结果......
kimi也一样,生成的格式差不多
但是我用了我同事自己训练的模型给的SQL
SELECT
***
FROM G
RIGHT JOIN W ON G.id = W.gid
WHERE G.type != 'UNIONType'
UNION ALL
SELECT ***
看到了吗,用UNION ALL将复杂查询直接简化成2个SQL,不仅易读而且
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
-- 查询 G.type != 'UNIONType' 的部分
SELECT
G.type,
G.id AS gid,
W.a AS a,
W.b,
W.c,
W.d,
W.e
FROM
G
RIGHT JOIN
W ON G.id = W.gid
WHERE
G.type != 'UNIONType'
UNION ALL
-- 查询 G.type = 'UNIONType' 的部分
SELECT
G.type,
G.id AS gid,
NULL AS a, -- 因为这部分不需要 W.a 和 W.b,可以显式返回 NULL 或其他默认值
NULL AS b,
SUM(W.c) AS c,
MIN(W.d) AS d,
MIN(W.e) AS e
FROM
G
RIGHT JOIN
W ON G.id = W.gid
WHERE
G.type = 'UNIONType'
GROUP BY
G.type, G.id;
第一部分处理 G.type != 'UNIONType' 的情况,直接返回所有字段。
第二部分处理 G.type = 'UNIONType' 的情况,对 W.c、W.d 和 W.e 进行聚合。
通义灵码是基于通义大模型的 AI 研发辅助工具,提供代码生成、研发问答、任务执行等能力,为开发者带来智能化研发体验,引领 AI 原生研发新范式。通义灵码包含 AI 编码助手和 AI 程序员。 更多信息欢迎加入通义灵码用户交流群(钉钉群号53770000738)
评论
全部评论 (0)