# Conflicts:
#	util/q_and_a_test1.py
This commit is contained in:
yujj128
2025-10-24 17:05:03 +08:00
3 changed files with 865 additions and 767 deletions

View File

@@ -81,12 +81,13 @@ template:
<rule-detail>使用了函数(如 COUNT(), CAST(), SUM())的字段,必须为其指定一个英文别名。</rule-detail>
<rule-detail>计算占比或百分比时,结果保留两位小数,并以 '%' 符号结尾。示例ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM table), 2) || '%' (PostgreSQL语法)</rule-detail>
<rule-detail>若查询结果包含枚举字段(如 gender=1,2必须使用 CASE WHEN 语句将其转换为可读的标签。示例: SELECT CASE WHEN "gender" = '1' THEN '男' WHEN "gender" = '2' THEN '女' END AS "gender"</rule-detail>
<rule-detail>重点!重点!重点涉及查询orgs表时部门存在多层级必须递归查询。使用 start .. with 语法。递归语法示例:
<rule-detail>重点!重点!重点涉及查询orgs表时部门存在多层级大部分需要递归查询。使用 start .. with 语法。递归语法示例:
SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs" START
WITH "name"||"shortname" LIKE '%xx中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
</rule-detail>
<rule-detail>当用户问题涉及查询是否时候。结果需要返回:是/否。而不是返回查询记录</rule-detail>
</rule>
<rule>
<rule-title>关联与限制</rule-title>

View File

@@ -28,9 +28,10 @@ def add_documentation(vn: CustomVanna):
random.shuffle(dd)
# for d in dd:
# vn.add_question_sql(question=d['question'], sql=d['answer'])
for d in q_and_a_test1.question_and_answer:
## tag 待定,容易过拟合
for d in dd:
vn.add_question_sql(
question=f"{d['question']} [分类:{d['category']}] [标签:{','.join(d['tags'])}]",
question=f"{d['question']}",
sql=d['answer']
)

View File

@@ -5,16 +5,22 @@ question_and_answer = [
{
"question": "张三的信息",
"answer": """
SELECT "id" AS "ID", "code" AS "工号", "name" AS "姓名",
"internal_unit" AS "内部单位", "external_unit" AS "外部单位",
"phone_number" AS "手机号", "email" AS "邮箱",
SELECT "id" AS "ID",
"code" AS "工号",
"name" AS "姓名",
"internal_unit" AS "内部单位",
"external_unit" AS "外部单位",
"phone_number" AS "手机号",
"email" AS "邮箱",
CASE WHEN "gender" = '1' THEN '' WHEN "gender" = '2' THEN '' ELSE "gender" END AS "性别",
-- 人员类型转换逻辑
CASE WHEN "person_type" = 'YG' THEN '正式员工'
CASE
WHEN "person_type" = 'YG' THEN '正式员工'
WHEN "person_type" = 'PQ' THEN '劳务派遣人员'
ELSE "person_type" END AS "人员类型"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database"
WHERE "dr" = 0 AND "name" = '张三' LIMIT 1000
WHERE "dr" = 0
AND "name" = '张三' LIMIT 1000
""",
"tags": ["员工", "基本信息", "单人员工"],
"category": "员工基本信息查询"
@@ -50,8 +56,9 @@ question_and_answer = [
"answer": """
SELECT COUNT(*)
FROM YJOA_APPSERVICE_DB.t_pr3rl2oj_yj_person_database
WHERE internal_dept in (SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH "name"||"shortname" LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
WHERE internal_dept in (SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs" START
WITH "name"||"shortname" LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid")
""",
"tags": ["员工", "部门", "人数"],
@@ -127,9 +134,12 @@ question_and_answer = [
SELECT p.id AS "id", p.code AS "employee_code", p.name AS "name", o.name AS "department_name"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o ON p.internal_dept = o.id
WHERE p.dr = 0 AND o.enable = 1 AND o.dr = 0 AND o.id IN (
SELECT id FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH ("name" LIKE '%XX%' OR "shortname" LIKE '%XX%')
WHERE p.dr = 0
AND o.enable = 1
AND o.dr = 0
AND o.id IN (SELECT id
FROM "IUAP_APDOC_BASEDOC"."org_orgs" START
WITH ("name" LIKE '%XX%' OR "shortname" LIKE '%XX%')
AND "enable" = 1 AND "dr" = 0
CONNECT BY PRIOR "id" = "parentid")
LIMIT 1000
@@ -140,15 +150,22 @@ question_and_answer = [
{
"question": "XX综合部男员工有哪些人",
"answer": """
SELECT p."id" AS "ID", p."code" AS "工号", p."name" AS "姓名",
CASE WHEN p."gender" = '1' THEN ''
WHEN p."gender" = '2' THEN '' END AS "性别", o."name" AS "部门名称"
SELECT p."id" AS "ID",
p."code" AS "工号",
p."name" AS "姓名",
CASE
WHEN p."gender" = '1' THEN ''
WHEN p."gender" = '2' THEN '' END AS "性别",
o."name" AS "部门名称"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o ON p."internal_dept" = o."id"
WHERE p."dr" = 0 AND p."gender" = '1' AND o."id" IN (
SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH ("name" LIKE '%综合处%' OR "shortname" LIKE '%综合处%')
AND "enable" = 1 AND "dr" = 0 CONNECT BY PRIOR "id" = "parentid")
WHERE p."dr" = 0
AND p."gender" = '1'
AND o."id" IN (SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs" START
WITH ("name" LIKE '%综合处%' OR "shortname" LIKE '%综合处%')
AND "enable" = 1 AND "dr" = 0
CONNECT BY PRIOR "id" = "parentid")
LIMIT 1000
""",
"tags": ["员工", "性别", "部门", "列表查询"],
@@ -157,16 +174,22 @@ question_and_answer = [
{
"question": "XX综合部女员工有那些人",
"answer": """
SELECT p."id" AS "id", p."code" AS "工号", p."name" AS "姓名",
CASE WHEN p."gender" = '1' THEN ''
WHEN p."gender" = '2' THEN '' END AS "性别", o."name" AS "部门名称"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o ON p."internal_dept" = o."id"
WHERE p."internal_dept" IN (
SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH ("name" LIKE '%XX综合部%' OR "shortname" LIKE '%XX综合部%')
SELECT p."id" AS "id",
p."code" AS "工号",
p."name" AS "姓名",
CASE
WHEN p."gender" = '1' THEN ''
WHEN p."gender" = '2' THEN '' END AS "性别",
o."name" AS "部门名称"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o ON p."internal_dept" = o."id"
WHERE p."internal_dept" IN (SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs" START
WITH ("name" LIKE '%XX综合部%' OR "shortname" LIKE '%XX综合部%')
AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid")
AND p."dr" = 0 AND p."gender" = '2'
AND p."dr" = 0
AND p."gender" = '2'
ORDER BY p."create_time"
DESC LIMIT 1000
""",
@@ -231,11 +254,12 @@ question_and_answer = [
SELECT SUM(CASE WHEN p."gender" = '1' THEN 1 ELSE 0 END) AS "男员工数",
SUM(CASE WHEN p."gender" = '2' THEN 1 ELSE 0 END) AS "女员工数"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
WHERE p."internal_dept" IN (
SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH "name" LIKE '%XX%' AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
WHERE p."internal_dept" IN (SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs" START
WITH "name" LIKE '%XX%' AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid")
AND p."dr" = 0 AND YEAR(p."input_time") = 2025
AND p."dr" = 0
AND YEAR (p."input_time") = 2025
LIMIT 1000;
""",
"tags": ["员工", "性别", "部门", "人数统计"],
@@ -248,9 +272,10 @@ question_and_answer = [
COUNT(CASE WHEN p."highest_degree" = '2' THEN 1 END) AS "master_count"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o ON p."internal_dept" = o."id"
WHERE p."dr" = 0 AND p."internal_dept" IN (
SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH ("name" || "shortname") LIKE '%XX%'
WHERE p."dr" = 0
AND p."internal_dept" IN (SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs" START
WITH ("name" || "shortname") LIKE '%XX%'
AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid")
LIMIT 1000
@@ -282,7 +307,11 @@ question_and_answer = [
SELECT o."name" AS "部门名称", COUNT(*) AS "人数"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o ON p."internal_dept" = o."id"
WHERE p."highest_degree" = '3' AND p."dr" = 0 AND o."dr" = 0 AND o."enable" = 1 AND o."code" LIKE '%CYJ%'
WHERE p."highest_degree" = '3'
AND p."dr" = 0
AND o."dr" = 0
AND o."enable" = 1
AND o."code" LIKE '%CYJ%'
GROUP BY o."id", o."name"
ORDER BY COUNT(*) DESC LIMIT 1000
""",
@@ -292,9 +321,13 @@ question_and_answer = [
{
"question": "张三的年龄是多少",
"answer": """
SELECT p."name" AS "name", EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM CAST(p."birthday" AS DATE)) AS "age"
SELECT p."name" AS "name",
EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM CAST(p."birthday" AS DATE)) AS "age"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
WHERE p."name" = '张三' AND p."dr" = 0 AND p."birthday" IS NOT NULL AND p."birthday" <> '' LIMIT 1;
WHERE p."name" = '张三'
AND p."dr" = 0
AND p."birthday" IS NOT NULL
AND p."birthday" <> '' LIMIT 1;
""",
"tags": ["员工", "个人", "年龄", "单人员工"],
"category": "年龄分析"
@@ -346,16 +379,23 @@ question_and_answer = [
"answer": '''
SELECT CASE
WHEN CAST(SUBSTR("birthday", 1, 4) AS INT) >= 2000 THEN '00后'
WHEN CAST(SUBSTR("birthday", 1, 4) AS INT) >= 1990 AND CAST(SUBSTR("birthday", 1, 4) AS INT) < 2000 THEN '90后'
WHEN CAST(SUBSTR("birthday", 1, 4) AS INT) >= 1980 AND CAST(SUBSTR("birthday", 1, 4) AS INT) < 1990 THEN '80后'
WHEN CAST(SUBSTR("birthday", 1, 4) AS INT) >= 1970 AND CAST(SUBSTR("birthday", 1, 4) AS INT) < 1980 THEN '70后'
WHEN CAST(SUBSTR("birthday", 1, 4) AS INT) >= 1960 AND CAST(SUBSTR("birthday", 1, 4) AS INT) < 1970 THEN '60后'
ELSE '其他年龄段' END AS "age_group", COUNT(*) AS "person_count"
WHEN CAST(SUBSTR("birthday", 1, 4) AS INT) >= 1990 AND
CAST(SUBSTR("birthday", 1, 4) AS INT) < 2000 THEN '90后'
WHEN CAST(SUBSTR("birthday", 1, 4) AS INT) >= 1980 AND
CAST(SUBSTR("birthday", 1, 4) AS INT) < 1990 THEN '80后'
WHEN CAST(SUBSTR("birthday", 1, 4) AS INT) >= 1970 AND
CAST(SUBSTR("birthday", 1, 4) AS INT) < 1980 THEN '70后'
WHEN CAST(SUBSTR("birthday", 1, 4) AS INT) >= 1960 AND
CAST(SUBSTR("birthday", 1, 4) AS INT) < 1970 THEN '60后'
ELSE '其他年龄段' END AS "age_group",
COUNT(*) AS "person_count"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
WHERE p."dr" = 0 AND p."birthday" IS NOT NULL AND p."birthday" != ''
WHERE p."dr" = 0
AND p."birthday" IS NOT NULL
AND p."birthday" != ''
AND p."internal_dept" IN (
SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH "name" || "shortname" LIKE '%数信中心%'
START WITH "name" || "shortname" LIKE '%xx中心%'
AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
@@ -364,7 +404,8 @@ question_and_answer = [
WHEN CAST (SUBSTR("birthday", 1, 4) AS INT) >= 1980 AND CAST (SUBSTR("birthday", 1, 4) AS INT) < 1990 THEN '80后'
WHEN CAST (SUBSTR("birthday", 1, 4) AS INT) >= 1970 AND CAST (SUBSTR("birthday", 1, 4) AS INT) < 1980 THEN '70后'
WHEN CAST (SUBSTR("birthday", 1, 4) AS INT) >= 1960 AND CAST (SUBSTR("birthday", 1, 4) AS INT) < 1970 THEN '60后'
ELSE '其他年龄段' END ORDER BY "age_group" ASC LIMIT 1000
ELSE '其他年龄段'
END ORDER BY "age_group" ASC LIMIT 1000
''',
"tags": ["员工", "部门", "年龄", "分布统计"],
"category": "年龄分析"
@@ -396,10 +437,9 @@ question_and_answer = [
{
"question": "XX中心的张三九月份在岗天数",
"answer": """
WITH dept_ids AS (
SELECT id
FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH (name LIKE '%XX中心%' OR shortname LIKE '%XX中心%')
WITH dept_ids AS (SELECT id
FROM "IUAP_APDOC_BASEDOC"."org_orgs" START
WITH (name LIKE '%XX中心%' OR shortname LIKE '%XX中心%')
CONNECT BY PRIOR id = parentid
)
SELECT p."code" AS "工号",
@@ -413,8 +453,7 @@ question_and_answer = [
AND ps."dr" = 0
AND p."dr" = 0
AND p."internal_dept" IN (SELECT id FROM dept_ids)
GROUP BY p."code", p."name"
LIMIT 1000;
GROUP BY p."code", p."name" LIMIT 1000;
""",
"tags": ["员工", "个人", "部门", "考勤", "在岗天数"],
"category": "考勤管理"
@@ -451,11 +490,15 @@ question_and_answer = [
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o ON p.internal_dept = o.id
JOIN "YJOA_APPSERVICE_DB"."t_yj_person_status" s ON p.code = s.person_id
WHERE o.id IN (SELECT id FROM "IUAP_APDOC_BASEDOC"."org_orgs"
WHERE o.id IN (SELECT id
FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH "name" || "shortname" LIKE '%XX%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid")
AND s.status = '1001' AND s.date_value = TO_CHAR(SYSDATE - 1, 'yyyy-MM-dd')
AND s.dr = 0 AND p.dr = 0 LIMIT 1000
AND s.status = '1001'
AND s.date_value = TO_CHAR(SYSDATE - 1,
'yyyy-MM-dd')
AND s.dr = 0
AND p.dr = 0 LIMIT 1000
''',
"tags": ["员工", "部门", "考勤", "在岗人数"],
"category": "考勤管理"
@@ -476,7 +519,8 @@ question_and_answer = [
)
AND ps."status" = '1003'
AND ps."date_value" LIKE '2025-10%'
AND p."dr" = 0 AND ps."dr" = 0 LIMIT 1000
AND p."dr" = 0
AND ps."dr" = 0 LIMIT 1000
""",
"tags": ["员工", "个人", "部门", "考勤", "休息天数"],
"category": "考勤管理"
@@ -506,7 +550,7 @@ question_and_answer = [
"category": "考勤管理"
},
{
"question": "数信部门9月有多少个人迟到",
"question": "xx部门9月有多少个人迟到",
"answer": '''
SELECT p."id" AS "id",
p."code" AS "工号",
@@ -520,7 +564,7 @@ question_and_answer = [
AND ps."date_value" LIKE '2025-10%'
and p.internal_dept in (SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs" START
WITH "name" || "shortname" LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
WITH "name" || "shortname" LIKE '%xx部门%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
AND p."dr" = 0
@@ -611,14 +655,20 @@ question_and_answer = [
INNER JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o
ON p."internal_dept" = o."id"
WHERE ps."date_value" IN ('2025-10-20', '2025-10-21', '2025-10-22')
AND ps."status" = '1006' AND p."dr" = 0 AND ps."dr" = 0 AND o."dr" = 0
AND o."enable" = 1 AND o."code" LIKE '%CYJ%' AND o."id" IN (
SELECT id FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH ("name" LIKE '%XX中心%' OR "shortname" LIKE '%XX中心%')
AND ps."status" = '1006'
AND p."dr" = 0
AND ps."dr" = 0
AND o."dr" = 0
AND o."enable" = 1
AND o."code" LIKE '%CYJ%'
AND o."id" IN (SELECT id
FROM "IUAP_APDOC_BASEDOC"."org_orgs" START
WITH ("name" LIKE '%XX中心%' OR "shortname" LIKE '%XX中心%')
AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
GROUP BY p."id", p."code", p."name", o."name" HAVING COUNT(*) = 3 LIMIT 1000
GROUP BY p."id", p."code", p."name", o."name"
HAVING COUNT (*) = 3 LIMIT 1000
''',
"tags": ["员工", "考勤", "部门", "天数", "迟到"],
"category": "考勤管理"
@@ -626,20 +676,27 @@ question_and_answer = [
{
"question": "XX中心员工本周迟到两次及以上的人",
"answer": '''
SELECT p."id" AS "id", p."code" AS "工号", p."name" AS "姓名", o."name" AS "部门", COUNT(ps."id") AS "迟到次数"
SELECT p."id" AS "id",
p."code" AS "工号",
p."name" AS "姓名",
o."name" AS "部门",
COUNT(ps."id") AS "迟到次数"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
INNER JOIN "YJOA_APPSERVICE_DB"."t_yj_person_status" ps
ON p."code" = ps."person_id"
INNER JOIN "IUAP_APDOC_BASEDOC"."org_orgs" o
ON p."internal_dept" = o."id"
WHERE p."internal_dept" IN (
SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH ("name" LIKE '%XX中心%' OR "shortname" LIKE '%XX中心%')
WHERE p."internal_dept" IN (SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs" START
WITH ("name" LIKE '%XX中心%' OR "shortname" LIKE '%XX中心%')
AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
AND ps."status" = '1006' AND ps."date_value"
BETWEEN '2025-10-16' AND '2025-10-22' AND p."dr" = 0
AND ps."status" = '1006'
AND ps."date_value"
BETWEEN '2025-10-16'
AND '2025-10-22'
AND p."dr" = 0
AND ps."dr" = 0
GROUP BY p."id", p."code", p."name", o."name"
HAVING COUNT (ps."id") >= 2
@@ -677,20 +734,26 @@ question_and_answer = [
{
"question": "XX中心员工在林芝工作的天数",
"answer": '''
SELECT p."code" AS "工号", p."name" AS "姓名",
SELECT p."code" AS "工号",
p."name" AS "姓名",
COUNT(DISTINCT TO_CHAR(a."attendance_time", 'yyyy-MM-dd')) AS "在林芝工作天数"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
LEFT JOIN "YJOA_APPSERVICE_DB"."t_yj_person_attendance" a ON p."code" = a."person_id"
LEFT JOIN "YJOA_APPSERVICE_DB"."t_yj_person_ac_area" ac ON a."access_control_point" = ac."ac_point"
WHERE p."dr" = 0 AND a."dr" = 0 AND ac."region" = 5 AND a."attendance_time" >= '2025-09-01'
LEFT JOIN "YJOA_APPSERVICE_DB"."t_yj_person_ac_area" ac
ON a."access_control_point" = ac."ac_point"
WHERE p."dr" = 0
AND a."dr" = 0
AND ac."region" = 5
AND a."attendance_time" >= '2025-09-01'
AND a."attendance_time" < '2025-10-01'
AND p."internal_dept" IN (
SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH ("name" LIKE '%数信中心%' OR "shortname" LIKE '%数信中心%')
AND p."internal_dept" IN (SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs" START
WITH ("name" LIKE '%xx中心%' OR "shortname" LIKE '%xx中心%')
AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
GROUP BY p."code", p."name" ORDER BY "在林芝工作天数" DESC LIMIT 1000;
GROUP BY p."code", p."name"
ORDER BY "在林芝工作天数" DESC LIMIT 1000;
''',
"tags": ["员工", "部门", "考勤", "工作地", "区域", "工作天数统计"],
"category": "工作地考勤统计分析"
@@ -716,7 +779,8 @@ question_and_answer = [
WHEN b."region" = 2 THEN '成都'
WHEN b."region" = 3 THEN '秭归'
WHEN b."region" = 4 THEN '拉萨'
WHEN b."region" = 5 THEN '林芝' END AS "地区", b."ac_point" AS "门禁点"
WHEN b."region" = 5 THEN '林芝' END AS "地区",
b."ac_point" AS "门禁点"
FROM "YJOA_APPSERVICE_DB"."t_yj_person_attendance" a
JOIN "YJOA_APPSERVICE_DB"."t_yj_person_ac_area" b
ON a."access_control_point" = b."ac_point"
@@ -755,8 +819,10 @@ question_and_answer = [
FROM YJOA_APPSERVICE_DB.t_yj_person_attendance a
LEFT JOIN YJOA_APPSERVICE_DB.t_yj_person_ac_area b
ON a.access_control_point = b.ac_point
WHERE a.person_name = '张三' AND b.region IN (4,5,6,7,8)
AND a.dr = 0 AND a.attendance_time >= '2025-01-01'
WHERE a.person_name = '张三'
AND b.region IN (4, 5, 6, 7, 8)
AND a.dr = 0
AND a.attendance_time >= '2025-01-01'
AND a.attendance_time < '2025-10-24' LIMIT 1000
''',
"tags": ["员工", "个人", "考勤", "工作地", "区域", "工作天数"],
@@ -769,8 +835,10 @@ question_and_answer = [
FROM YJOA_APPSERVICE_DB.t_yj_person_attendance a
JOIN YJOA_APPSERVICE_DB.t_yj_person_ac_area b
ON a.access_control_point = b.ac_point
WHERE a.person_name = '张三' AND b.region IN (4,5,6,7,8)
AND a.dr = 0 ORDER BY a.attendance_time ASC LIMIT 1
WHERE a.person_name = '张三'
AND b.region IN (4, 5, 6, 7, 8)
AND a.dr = 0
ORDER BY a.attendance_time ASC LIMIT 1
''',
"tags": ["员工", "个人", "考勤", "工作地", "区域", "最早在藏时间"],
"category": "工作地考勤统计分析"
@@ -780,12 +848,15 @@ question_and_answer = [
"answer": '''
SELECT TO_CHAR(a.attendance_time, 'yyyy-MM') AS month, COUNT(DISTINCT TO_CHAR(a.attendance_time, 'yyyy-MM-dd')) AS tibet_days
FROM YJOA_APPSERVICE_DB.t_yj_person_attendance a
LEFT JOIN YJOA_APPSERVICE_DB.t_yj_person_ac_area ac ON a.access_control_point = ac.ac_point
LEFT JOIN YJOA_APPSERVICE_DB.t_yj_person_ac_area ac
ON a.access_control_point = ac.ac_point
WHERE a.person_name = '张三'
AND a.dr = 0
AND ac.region IN (4,5)
AND ac.region IN (4
, 5)
AND a.attendance_time >= '2025-05-01'
AND a.attendance_time < '2025-11-01'
AND a.attendance_time
< '2025-11-01'
GROUP BY TO_CHAR(a.attendance_time, 'yyyy-MM')
ORDER BY TO_CHAR(a.attendance_time, 'yyyy-MM') ASC
LIMIT 1000
@@ -796,14 +867,19 @@ question_and_answer = [
{
"question": "XX中心在林芝最长时间的是谁待了多少天",
"answer": '''
SELECT p."code" AS "工号", p."name" AS "姓名", COUNT(DISTINCT TO_CHAR(a."attendance_time", 'yyyy-MM-dd')) AS "在林芝工作天数"
SELECT p."code" AS "工号",
p."name" AS "姓名",
COUNT(DISTINCT TO_CHAR(a."attendance_time", 'yyyy-MM-dd')) AS "在林芝工作天数"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
LEFT JOIN "YJOA_APPSERVICE_DB"."t_yj_person_attendance" a ON p."code" = a."person_id"
LEFT JOIN "YJOA_APPSERVICE_DB"."t_yj_person_ac_area" ac ON a."access_control_point" = ac."ac_point"
WHERE p."dr" = 0 AND a."dr" = 0 AND ac."region" = 5
AND p."internal_dept" IN (
SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH ("name" LIKE '%数信中心%' OR "shortname" LIKE '%数信中心%')
LEFT JOIN "YJOA_APPSERVICE_DB"."t_yj_person_ac_area" ac
ON a."access_control_point" = ac."ac_point"
WHERE p."dr" = 0
AND a."dr" = 0
AND ac."region" = 5
AND p."internal_dept" IN (SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs" START
WITH ("name" LIKE '%xx中心%' OR "shortname" LIKE '%xx中心%')
AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
@@ -817,25 +893,45 @@ question_and_answer = [
{
"question": "XX中心的员工九月在林芝工作的天数排名",
"answer": '''
SELECT p."code" AS "工号", p."name" AS "姓名", COUNT(DISTINCT TO_CHAR(a."attendance_time", 'yyyy-MM-dd')) AS "在林芝工作天数"
SELECT p."code" AS "工号",
p."name" AS "姓名",
COUNT(DISTINCT TO_CHAR(a."attendance_time", 'yyyy-MM-dd')) AS "在林芝工作天数"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
LEFT JOIN "YJOA_APPSERVICE_DB"."t_yj_person_attendance" a ON p."code" = a."person_id"
LEFT JOIN "YJOA_APPSERVICE_DB"."t_yj_person_ac_area" ac ON a."access_control_point" = ac."ac_point"
WHERE p."dr" = 0 AND a."dr" = 0 AND ac."region" = 5
AND p."internal_dept" IN (
SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH ("name" LIKE '%XX中心%' OR "shortname" LIKE '%XX中心%')
LEFT JOIN "YJOA_APPSERVICE_DB"."t_yj_person_ac_area" ac
ON a."access_control_point" = ac."ac_point"
WHERE p."dr" = 0
AND a."dr" = 0
AND ac."region" = 5
AND p."internal_dept" IN (SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs" START
WITH ("name" LIKE '%XX中心%' OR "shortname" LIKE '%XX中心%')
AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
AND TO_CHAR(a."attendance_time", 'yyyy-MM') = '2025-09'
AND TO_CHAR(a."attendance_time"
, 'yyyy-MM') = '2025-09'
GROUP BY p."code", p."name"
ORDER BY "在林芝工作天数" DESC
LIMIT 1000;
''',
"tags": ["员工", "个人", "考勤", "工作地", "区域", "天数", "排名"],
"category": "工作地考勤统计分析"
},
}, {
"question": "张三10月份是否有迟到",
"answer": '''
SELECT CASE WHEN COUNT(*) > 0 THEN '' ELSE '' END AS "是否迟到"
FROM "YJOA_APPSERVICE_DB"."t_yj_person_status" ps
JOIN "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p ON ps."person_id" = p."code"
WHERE p."name" = '张三'
AND ps."status" = '1006'
AND ps."date_value" LIKE '2025-10%'
AND ps."dr" = 0
AND p."dr" = 0
''',
"tags": ["员工", "个人", "考勤"],
"category": "考勤"
}
]