Compare commits

...

3 Commits

6 changed files with 929 additions and 85 deletions

View File

@@ -53,6 +53,7 @@ template:
<rule-detail>若数据库引擎是 MySQL, Doris则表名、字段名、别名使用反引号如 `table_name`。</rule-detail>
<rule-detail>生成的SQL必须避免与数据库关键字冲突。</rule-detail>
<rule-detail>注意列名定义和使用的先后顺序例如SELECT阶段定义了列名如果GROUP BY阶段先与SELECT阶段执行时是不许在GROUP BY阶段引用列名的。</rule-detail>
<rule-detail>在ORDER BY、GROUP BY、WHERE子句中不要使用SELECT中定义的别名</rule-detail>
</rule>
<rule>
<rule-title>数据查询与排序</rule-title>
@@ -180,8 +181,12 @@ template:
<description>这些都可能是外部单位的名称</description>
</terminology>
<terminology>
<words><word>数信中心</word><word>建设处</word><word>规划发展部</word></words>
<description>这些都可能是单位的名称</description>
<words><word>数信中心</word><word>建设处</word><word>规划发展部</word><word>综合处</word></words>
<description>这些都可能是单位的名称,属于内部部门</description>
</terminology>
<terminology>
<words><word>external_unit</word><word>external_dept</word></words>
<description>这些直接是外部单位和外部部门的字段,值是名称,非编号</description>
</terminology>
</terminologies>
<!-- [RAG 集成区] -->

View File

@@ -1,6 +1,7 @@
from service.cus_vanna_srevice import CustomVanna
from util import train_ddl
from util import q_and_a_dict,q_a_next
from util import q_and_a_dict,q_and_a_test1,q_a_next
import random
table_ddls = [
train_ddl.person_database_ddl,train_ddl.person_status_ddl,
@@ -22,9 +23,15 @@ def add_documentation(vn: CustomVanna):
for doc in list_documentions:
vn.add_documentation(doc)
dd=[]
dd.extend(q_and_a_dict.question_and_answer)
##dd.extend(q_a_next.org_and_attend_q_a)
dd.extend(q_and_a_test1.question_and_answer)
dd.extend(q_a_next.org_and_attend_q_a)
random.shuffle(dd)
for d in dd:
vn.add_question_sql(question=d['question'], sql=d['answer'])
# for d in dd:
# vn.add_question_sql(question=d['question'], sql=d['answer'])
for d in q_and_a_test1.question_and_answer:
vn.add_question_sql(
question=f"{d['question']} [分类:{d['category']}] [标签:{','.join(d['tags'])}]",
sql=d['answer']
)

View File

@@ -20,7 +20,9 @@ org_and_attend_q_a = [
CONNECT BY PRIOR "id" = "parentid")
GROUP BY p."code", p."name"
ORDER BY "在林芝工作天数" DESC LIMIT 1000
'''
''',
"tags": ["员工", "部门","考勤", "工作地", "区域", "天数"],
"category": "工作地考勤统计分析"
}, {
"question": "xx中心10月有哪些人迟到/早退",
"answer": '''
@@ -39,7 +41,9 @@ org_and_attend_q_a = [
WITH "name" || "shortname" LIKE '%xx中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid")
ORDER BY ps."date_value" DESC LIMIT 1000
'''
''',
"tags": ["员工","部门", "考勤", "迟到","早退"],
"category": "考勤管理"
},
{
"question": "xx中心10月有哪些人出差",
@@ -59,7 +63,9 @@ org_and_attend_q_a = [
WITH "name" || "shortname" LIKE '%xx中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid")
ORDER BY ps."date_value" DESC LIMIT 1000
'''
''',
"tags": ["员工", "部门", "考勤", "出差"],
"category": "考勤管理"
},
{
"question": "xx中心10月有哪些人旷工",
@@ -79,7 +85,9 @@ org_and_attend_q_a = [
WITH "name" || "shortname" LIKE '%xx中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid")
ORDER BY ps."date_value" DESC LIMIT 1000
'''
''',
"tags": ["员工", "部门", "考勤", "矿工"],
"category": "考勤管理"
},
{
"question": "xx中心10月有哪些人请假",
@@ -99,7 +107,9 @@ org_and_attend_q_a = [
WITH "name" || "shortname" LIKE '%xx中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid")
ORDER BY ps."date_value" DESC LIMIT 1000
'''
''',
"tags": ["员工", "部门", "考勤", "请假"],
"category": "考勤管理"
},
{
"question": "xx中心9月迟到次数多前三是哪几个员工",
@@ -120,7 +130,9 @@ org_and_attend_q_a = [
CONNECT BY PRIOR id = parentid)
GROUP BY p.name, p.code, o.name
ORDER BY "late_count" DESC LIMIT 3
'''
''',
"tags": ["员工", "部门", "考勤", "迟到","次数","排行"],
"category": "考勤管理"
}, {
"question": "xx中心员工10月打卡记录查询",
"answer": '''
@@ -152,9 +164,11 @@ org_and_attend_q_a = [
AND o2."enable" = 1
CONNECT BY PRIOR o2."id" = o2."parentid")
ORDER BY a."attendance_time" DESC LIMIT 1000
'''
''',
"tags": ["员工", "部门","考勤", "打卡记录", "明细查询"],
"category": "考勤管理"
}, {
"question": "xx中心员工10月考勤查询",
"question": "xx中心员工10月考勤查询",
"answer": '''
SELECT p."code" AS "工号",
p."name" AS "姓名",
@@ -181,10 +195,12 @@ org_and_attend_q_a = [
WITH ("name" LIKE '%xx中心%' OR "shortname" LIKE '%xx中心%') AND "enable" = 1 AND "dr" = 0 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid") AND ps."date_value" LIKE '2025-10%' AND ps."dr" = 0 AND p."dr" = 0
ORDER BY ps."date_value" DESC LIMIT 1000
'''
''',
"tags": ["员工", "部门", "考勤状态", "明细查询"],
"category": "考勤管理"
},{
"question": "10月迟到人数最多的部门",
"answer": '''
"answer": '''
SELECT o."name" AS "部门名称", COUNT(DISTINCT ps."person_id") AS "迟到人数"
FROM "YJOA_APPSERVICE_DB"."t_yj_person_status" ps
JOIN "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
@@ -198,7 +214,9 @@ org_and_attend_q_a = [
AND o."code" LIKE '%CYJ%'
GROUP BY o."name"
ORDER BY COUNT(DISTINCT ps."person_id") DESC LIMIT 1
'''
''',
"tags": ["员工", "部门", "考勤", "迟到","人数","最值"],
"category": "考勤管理"
}
]

View File

@@ -34,7 +34,8 @@ question_and_answer = [
AND "dr" = '0'
ORDER BY "最高学位", "姓名" LIMIT 1000
'''
}, {
},
{
"question": "8月份在藏,超过10天的有哪些员工",
"answer": '''
SELECT DISTINCT p."code" AS "工号",
@@ -87,7 +88,7 @@ question_and_answer = [
'''
},
{
{
"question": "在研发基地工作的有哪些员工",
"answer": '''
SELECT "id" AS "id",
@@ -109,9 +110,9 @@ question_and_answer = [
a."attendance_time" AS "考勤时间",
a."attendance_address" AS "考勤地址",
CASE
WHEN a."status" = 0 THEN '在岗'
WHEN a."status" = 1 THEN '出差'
WHEN a."status" = 2 THEN '休假' END AS "状态",
WHEN a."status" = 1 THEN '在岗'
WHEN a."status" = 2 THEN '出差'
WHEN a."status" = 3 THEN '休假' END AS "状态",
CASE
WHEN a."enter_or_exit" = 0 THEN ''
WHEN a."enter_or_exit" = 1
@@ -120,6 +121,7 @@ question_and_answer = [
WHEN b."region" = 1 THEN '北京'
WHEN b."region" = 2 THEN '成都'
WHEN b."region" = 3 THEN '秭归'
WHEN b."region" = 4 THEN '拉萨'
WHEN b."region" = 5 THEN '林芝' END AS "地区", AS "门禁点"
FROM "YJOA_APPSERVICE_DB"."t_yj_person_attendance" a
JOIN "YJOA_APPSERVICE_DB"."t_yj_person_ac_area" b
@@ -132,7 +134,8 @@ question_and_answer = [
AND a."dr" = 0
ORDER BY a."attendance_time" DESC LIMIT 1000
'''
}, {
},
{
"question": "查询张三9月份有多少天在岗",
"answer": '''
SELECT p."code" AS "工号",
@@ -154,7 +157,8 @@ question_and_answer = [
ELSE p."external_unit"
END LIMIT 1000
'''
}, {
},
{
"question": "XX中心下有多少员工",
"answer": '''
select count(*)
@@ -195,7 +199,8 @@ question_and_answer = [
ORDER BY "人数" DESC
LIMIT 1000
'''
}, {
},
{
"question": "张三9月在林芝工作有多少天",
"answer": '''
SELECT count(distinct (TO_CHAR(a."attendance_time", 'yyyy-MM-dd'))) as count
@@ -244,46 +249,30 @@ question_and_answer = [
{
"question": "XX中心员工年龄段分布图",
"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"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
WHERE "dr" = 0
AND "birthday" IS NOT NULL
AND "birthday" != ''
AND internal_dept IN (
SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs"
WHERE "parentid" IN (
SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs"
WHERE name || shortname LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
) OR id IN (SELECT "id"
FROM "IUAP_APDOC_BASEDOC"."org_orgs"
WHERE name || shortname LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%')
)
GROUP BY
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
ORDER BY "age_group" ASC LIMIT 1000
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"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
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 '%数信中心%'
AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
GROUP BY 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 ORDER BY "age_group" ASC LIMIT 1000
'''
}, {
},
{
"question": "查询XX部下面的员工以及他们的年龄",
"answer": '''
SELECT p."id" AS "员工ID",
@@ -483,7 +472,8 @@ question_and_answer = [
AND p."highest_degree" = '3'
LIMIT 1000
'''
}, {
},
{
"question": "XX中心在藏最长时间的人是谁",
"answer": '''
SELECT p."name" AS "姓名", p."code" AS "工号", COUNT(ps."id") AS "在藏天数"
@@ -500,7 +490,8 @@ question_and_answer = [
GROUP BY p."name", p."code"
ORDER BY COUNT (ps."id") DESC LIMIT 1
'''
}, {
},
{
"question": "XX中心员工在林芝工作的天数",
"answer": '''
SELECT DISTINCT p."code" AS "工号",

841
util/q_and_a_test1.py Normal file
View File

@@ -0,0 +1,841 @@
import json
# 按功能模块组织
question_and_answer = [
{
"question": "张三的信息",
"answer": """
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 '正式员工'
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
""",
"tags": ["员工", "基本信息", "单人员工"],
"category": "员工基本信息查询"
},
{
"question": "在研发基地工作的有哪些员工",
"answer": '''
SELECT "id" AS "id",
"code" AS "工号",
"name" AS "姓名",
"internal_unit" AS "内部单位",
"external_unit" AS "外部单位",
"office_address" AS "办公地点"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database"
WHERE ("office_address" LIKE '%研发基地%' OR "office_city" LIKE '%研发基地%')
AND "dr" = '0' LIMIT 1000
''',
"tags": ["员工", "工作地", "条件筛选查询"],
"category": "员工基本信息查询"
},
{
"question": "总共有多少员工",
"answer": """
SELECT COUNT(1) AS "total_count"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database"
WHERE "dr" = 0 LIMIT 1000
""",
"tags": ["员工", "人数", "总体统计"],
"category":"员工统计与分析"
},
{
"question": "XX中心下有多少员工",
"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%'
CONNECT BY PRIOR "id" = "parentid")
""",
"tags": ["员工", "部门", "人数"],
"category": "员工统计与分析"
},
{
"question": "XX中心下各个处室分别有多少人",
"answer": """
SELECT o.name AS "处室名称", COUNT(p.id) 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"||"shortname" LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
AND p.dr = 0
GROUP BY o.name
ORDER BY "人数" DESC
LIMIT 1000
""",
"tags": ["员工", "部门", "人数"],
"category": "员工统计与分析"
},
{
"question": "XX中心下的XX管理处有多少人",
"answer": '''
SELECT o.name AS "处室名称", COUNT(p.id) 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"||"shortname" LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
AND p.dr = 0
AND o.name LIKE '%XX管理处%'
GROUP BY o.name
ORDER BY "人数" DESC
LIMIT 1000
''',
"tags": ["员工", "部门", "人数"],
"category": "员工统计与分析"
},
{
"question": "XX中心正式人员有多少各个处室有多少",
"answer": '''
SELECT o.name AS "处室名称", COUNT(p.id) 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.person_type = 'YG'
AND 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"
)
)
GROUP BY o.name
ORDER BY "正式员工数量" DESC
LIMIT 1000;
''',
"tags": ["员工", "部门", "人员类型", "正式员工", "处室分布"],
"category": "员工统计与分析"
},
{
"question": "XX部门有哪些员工",
"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%')
AND "enable" = 1 AND "dr" = 0
CONNECT BY PRIOR "id" = "parentid")
LIMIT 1000
""",
"tags": ["员工", "部门", "列表查询"],
"category": "部门人员查询"
},
{
"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."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": ["员工", "性别", "部门", "列表查询"],
"category": "性别分布统计"
},
{
"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综合部%')
AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid")
AND p."dr" = 0 AND p."gender" = '2'
ORDER BY p."create_time"
DESC LIMIT 1000
""",
"tags": ["员工", "性别", "部门"],
"category": "性别分布统计"
},
{
"question": "XX部有多少员工男女员工分别有多少",
"answer": """
SELECT COUNT(*) AS "总人数",
SUM(CASE WHEN gender = '1' THEN 1 ELSE 0 END) AS "男员工数",
SUM(CASE WHEN 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"||"shortname" LIKE '%XX部%'
CONNECT BY PRIOR "id" = "parentid"
)
AND p.dr = 0
LIMIT 1000;
""",
"tags": ["员工", "性别", "部门", "人数统计"],
"category": "性别分布统计"
},
{
"question": "XX中心男女各多少人",
"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%'
CONNECT BY PRIOR "id" = "parentid"
)
AND p."dr" = 0
LIMIT 1000;
""",
"tags": ["员工", "性别", "部门", "人数统计"],
"category": "性别分布统计"
},
{
"question": "XX综合部女员工有多少",
"answer": """
SELECT (SELECT COUNT(*)
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"||"shortname" LIKE '%XX综合部%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
AND p."gender" = '2'
AND p."dr" = 0
) AS "女员工数"
""",
"tags": ["员工", "性别", "部门", "人数统计"],
"category": "性别分布统计"
},
{
"question": "今年新入职XX部门的员工中男女各有多少",
"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%'
CONNECT BY PRIOR "id" = "parentid")
AND p."dr" = 0 AND YEAR(p."input_time") = 2025
LIMIT 1000;
""",
"tags": ["员工", "性别", "部门", "人数统计"],
"category": "性别分布统计"
},
{
"question": "XX部门博士和硕士分别有多少员工",
"answer": """
SELECT COUNT(CASE WHEN p."highest_degree" = '3' THEN 1 END) AS "doctor_count",
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%'
AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid")
LIMIT 1000
""",
"tags": ["员工", "学历", "部门", "人数统计"],
"category": "学历分布统计"
},
{
"question": "XX部门博士多少人",
"answer": '''
SELECT 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."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"
)
AND p."dr" = 0
AND p."highest_degree" = '3'
LIMIT 1000
''',
"tags": ["员工", "学历", "部门", "人数统计"],
"category": "学历分布统计"
},
{
"question": "博士分布在哪些部门,各有多少人",
"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%'
GROUP BY o."id", o."name"
ORDER BY COUNT(*) DESC LIMIT 1000
""",
"tags": ["员工", "学历", "部门", "人数统计"],
"category": "学历分布统计"
},
{
"question": "张三的年龄是多少",
"answer": """
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;
""",
"tags": ["员工","个人", "年龄", "单人员工"],
"category": "年龄分析"
},
{
"question": "查询XX部门的员工平均年龄",
"answer": """
SELECT ROUND(AVG(2025 - CAST(SUBSTR(p."birthday", 1, 4) AS INT)), 2) 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 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 p."birthday" IS NOT NULL
AND p."birthday" != ''
LIMIT 1000;
""",
"tags": ["员工", "部门", "年龄", "统计分析"],
"category": "年龄分析"
},
{
"question": "XX部门年龄最小的员工是谁多少岁",
"answer": '''
SELECT p."name" AS "姓名",
CAST(p."birthday" AS DATE) AS "出生日期",
EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM CAST(p."birthday" AS DATE)) 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" || "shortname" LIKE '%XX%'
AND "dr" = 0
AND "enable" = 1
AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
AND p."dr" = 0
AND p."birthday" IS NOT NULL
AND p."birthday" != ''
ORDER BY "年龄" ASC
LIMIT 1
''',
"tags": ["员工","个人", "部门", "年龄", "最值统计分析"],
"category": "年龄分析"
},
{
"question": "XX中心员工年龄段分布图",
"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"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database" p
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 '%数信中心%'
AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
GROUP BY 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 ORDER BY "age_group" ASC LIMIT 1000
''',
"tags": ["员工", "部门", "年龄", "分布统计"],
"category": "年龄分析"
},
{
"question": "查询XX部下面的员工以及他们的年龄",
"answer": '''
SELECT p."id" AS "员工ID",
p."name" AS "姓名",
o."name" AS "所属部门",
CAST(SUBSTR(p."birthday", 1, 4) AS INT) AS "出生年份",
2025 - CAST(SUBSTR(p."birthday", 1, 4) AS INT) AS "年龄",
CASE WHEN p."gender" = '1' THEN '' WHEN p."gender" = '2' THEN '' END 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 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 p."birthday" IS NOT NULL
AND p."birthday" != ''
ORDER BY o."name" ASC, p."birthday" DESC
LIMIT 1000;
''',
"tags": ["员工", "部门", "年龄"],
"category": "年龄分析"
},
{
"question": "XX中心的张三九月份在岗天数",
"answer": """
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 "工号",
p."name" AS "姓名",
COUNT(CASE WHEN ps."status" = '1001' THEN 1 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."date_value" LIKE '2025-09%'
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;
""",
"tags": ["员工","个人", "部门", "考勤", "在岗天数"],
"category": "考勤管理"
},
{
"question": "XX中心今天各个处室在岗人员数量",
"answer": '''
SELECT o.name AS "处室名称", COUNT(p.id) 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"||"shortname" LIKE '%XX中心%' AND "dr"=0 AND "enable"=1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
AND p.id IN (
SELECT person_id
FROM "YJOA_APPSERVICE_DB"."t_yj_person_status"
WHERE status = '1001'
AND date_value = TO_CHAR(SYSDATE, 'yyyy-MM-dd')
AND dr = 0)
AND p.dr = 0
GROUP BY o.name
ORDER BY "人数" DESC
LIMIT 1000
''',
"tags": ["员工", "部门", "考勤", "在岗人数"],
"category": "考勤管理"
},
{
"question": "XX部门昨天在岗人员数量",
"answer": '''
SELECT COUNT(p.id) AS "人数"
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.id = s.person_id
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
''',
"tags": ["员工", "部门", "考勤", "在岗人数"],
"category": "考勤管理"
},
{
"question": "XX中心的李四十月份休息了多少天",
"answer": """
SELECT COUNT(*) AS rest_days
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"
WHERE p."name" = '谭杰明'
AND p."internal_dept" IN (
SELECT "id" FROM "IUAP_APDOC_BASEDOC"."org_orgs"
START WITH ("name" LIKE '%数信中心%' OR "shortname" LIKE '%数信中心%')
AND "dr" = 0 AND "enable" = 1 AND "code" LIKE '%CYJ%'
CONNECT BY PRIOR "id" = "parentid"
)
AND ps."status" = '1003'
AND ps."date_value" LIKE '2025-10%'
AND p."dr" = 0 AND ps."dr" = 0 LIMIT 1000
""",
"tags": ["员工", "个人","部门", "考勤", "休息天数"],
"category": "考勤管理"
},
{
"question": "10月XX中心有哪些有员工请假",
"answer": '''
SELECT p."id" AS "id",
p."code" AS "工号",
p."name" AS "姓名",
p."internal_unit" AS "内部单位",
p."external_unit" AS "外部单位",
CASE WHEN ps."status" = '1003' THEN '休假,请假' ELSE ps."status" END 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"
WHERE ps."status" = '1003'
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%'
CONNECT BY PRIOR "id" = "parentid"
)
AND p."dr" = 0
AND ps."dr" = 0 LIMIT 1000
''',
"tags": ["员工", "部门", "考勤", "请假"],
"category": "考勤管理"
},
{
"question": "数信部门9月有多少个人迟到",
"answer": '''
SELECT p."id" AS "id",
p."code" AS "工号",
p."name" AS "姓名",
p."internal_unit" AS "内部单位",
p."external_unit" AS "外部单位",
CASE WHEN ps."status" = '1003' THEN '休假,请假' ELSE ps."status" END 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"
WHERE ps."status" = '1003'
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%'
CONNECT BY PRIOR "id" = "parentid"
)
AND p."dr" = 0
AND ps."dr" = 0 LIMIT 1000
''',
"tags": ["员工", "部门", "考勤", "迟到"],
"category": "考勤管理"
},
{
"question": "9月有哪些员工在休假",
"answer": '''
SELECT DISTINCT p."id" AS "id",
p."code" AS "工号",
p."name" AS "姓名",
p."internal_unit" AS "内部单位",
p."external_unit" 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"
WHERE ps."status" = '1003'
AND ps."date_value" LIKE '2025-09%' LIMIT 1000
''',
"tags": ["员工", "考勤", "休假"],
"category": "考勤管理"
},
{
"question": "张三 8月的考勤查询",
"answer": '''
SELECT DISTINCT p."code" AS "工号",
p."name" AS "姓名",
p."internal_unit" AS "内部单位",
p."external_unit" AS "外部单位",
CASE
WHEN ps."status" = '1001' THEN '在岗'
WHEN ps."status" = '1002' THEN '出差'
WHEN ps."status" = '1003' THEN '休假,请假'
WHEN ps."status" = '1005' THEN '旷工'
WHEN ps."status" = '1006' THEN '迟到,早退'
WHEN ps."status" = '1007' THEN '休息日'
WHEN ps."status" = '4001' THEN 'am在岗pm缺勤'
WHEN ps."status" = '4002' THEN 'am缺勤pm在岗'
WHEN ps."status" = '6001' THEN 'am在岗pm早退'
WHEN ps."status" = '6002' THEN 'am迟到pm在岗'
WHEN ps."status" = '6004' THEN 'am迟到pm缺勤'
WHEN ps."status" = '4006' THEN 'am缺勤pm早退' END AS "人员状态",
ps."date_value" 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."date_value" LIKE '2025-08%'
AND ps."dr" = 0
ORDER BY ps."date_value" DESC LIMIT 1000
''',
"tags": ["员工", "考勤", "个人"],
"category": "考勤管理"
},
{
"question": "张三今天早上9点半之前有打卡记录吗",
"answer": '''
SELECT a."person_name" AS "姓名",
a."attendance_time" AS "考勤时间",
a."attendance_address" AS "考勤地址",
CASE
WHEN a."status" = 1 THEN '在岗'
WHEN a."status" = 2 THEN '出差'
WHEN a."status" = 3 THEN '休假'
END AS "状态",
CASE
WHEN a."enter_or_exit" = 1 THEN ''
WHEN a."enter_or_exit" = 2 THEN ''
END AS "进出类型"
FROM "YJOA_APPSERVICE_DB"."t_yj_person_attendance" a
WHERE a."person_name" = '张三'
AND a."attendance_time" >= '2025-10-16 00:00:00'
AND a."attendance_time" < '2025-10-16 09:30:00'
AND a."dr" = 0
ORDER BY a."attendance_time" DESC LIMIT 1000
''',
"tags": ["员工", "考勤", "打卡记录", "个人", "时间段", "明细查询"],
"category": "考勤管理"
},
{
"question": "XX中心员工最近三天谁天天迟到",
"answer": '''
SELECT p."id" AS "id", p."code" AS "code", p."name" AS "name", o."name" AS "department_name"
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 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 "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
''',
"tags": ["员工", "考勤", "部门", "天数", "迟到"],
"category": "考勤管理"
},
{
"question": "XX中心员工本周迟到两次及以上的人",
"answer": '''
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中心%')
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."dr" = 0
GROUP BY p."id", p."code", p."name", o."name"
HAVING COUNT(ps."id") >= 2
ORDER BY COUNT(ps."id") DESC LIMIT 1000
''',
"tags": ["员工", "考勤", "部门", "天数", "迟到","次数统计"],
"category": "考勤管理"
},
{
"question": "来自联通的有多少员工",
"answer": """
SELECT "id" AS "id",
"code" AS "工号",
"name" AS "姓名",
"external_unit" AS "外部单位"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database"
WHERE "external_unit" LIKE '%联通%' LIMIT 1000
""",
"tags": ["员工", "外部单位", "统计查询"],
"category": "外部单位统计"
},
{
"question": "各个外部单位下的员工人数统计",
"answer": """
SELECT "external_unit" AS "外部单位", COUNT(*) AS "员工人数"
FROM "YJOA_APPSERVICE_DB"."t_pr3rl2oj_yj_person_database"
WHERE "external_unit" IS NOT NULL
AND "external_unit" != ''
GROUP BY "external_unit"
ORDER BY "员工人数" DESC LIMIT 1000
""",
"tags": ["员工", "外部单位", "人数统计"],
"category": "外部单位统计"
},
{
"question": "XX中心员工在林芝工作的天数",
"answer": '''
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'
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 "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;
''',
"tags": ["员工", "部门", "考勤", "工作地", "区域", "工作天数统计"],
"category": "工作地考勤统计分析"
},
{
"question": "查询张三9月在林芝的打卡记录",
"answer": '''
SELECT a."person_name" AS "姓名",
a."person_id" AS "人员ID",
a."attendance_time" AS "考勤时间",
a."attendance_address" AS "考勤地址",
CASE
WHEN a."status" = 1 THEN '在岗'
WHEN a."status" = 2 THEN '出差'
WHEN a."status" = 3 THEN '休假' END AS "状态",
CASE
WHEN a."enter_or_exit" = 0 THEN ''
WHEN a."enter_or_exit" = 1
THEN '' END AS "进出类型",
CASE
WHEN b."region" = 1 THEN '北京'
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 "门禁点"
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" = 5
AND a."attendance_time" >= '2025-09-01'
AND a."attendance_time"
< '2025-10-01'
AND a."dr" = 0
ORDER BY a."attendance_time" DESC LIMIT 1000
''',
"tags": ["员工", "个人","考勤", "工作地", "区域", "打卡统计"],
"category": "工作地考勤统计分析"
},
{
"question": "张三9月在林芝工作有多少天",
"answer": '''
SELECT count(distinct (TO_CHAR(a."attendance_time", 'yyyy-MM-dd'))) as count
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=5
AND a."attendance_time" >= '2025-09-01'
AND a."attendance_time"
< '2025-10-01'
AND a."dr" = 0 LIMIT 1000
''',
"tags": ["员工","个人", "考勤", "工作地", "区域", "工作天数"],
"category": "工作地考勤统计分析"
},
{
"question": "张三在藏多少天了",
"answer": '''
SELECT COUNT(DISTINCT TO_CHAR(a.attendance_time, 'yyyy-MM-dd')) AS days_in_tibet
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'
AND a.attendance_time < '2025-10-24' LIMIT 1000
''',
"tags": ["员工", "个人", "考勤", "工作地", "区域", "工作天数"],
"category": "工作地考勤统计分析"
},
{
"question": "张三最早在藏是哪一天",
"answer": '''
SELECT TO_CHAR(a.attendance_time, 'yyyy-MM-dd') AS earliest_date
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
''',
"tags": ["员工", "个人", "考勤", "工作地", "区域", "最早在藏时间"],
"category": "工作地考勤统计分析"
},
{
"question": "张三从5月到10月每个月分别在藏多长时间",
"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
WHERE a.person_name = '张三'
AND a.dr = 0
AND ac.region IN (4,5)
AND a.attendance_time >= '2025-05-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
''',
"tags": ["员工", "个人", "考勤", "工作地", "区域", "每月在藏天数"],
"category": "工作地考勤统计分析"
},
{
"question": "XX中心在林芝最长时间的是谁待了多少天",
"answer": '''
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 '%数信中心%')
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 1;
''',
"tags": ["员工", "个人", "考勤", "工作地", "区域", "天数","最值"],
"category": "工作地考勤统计分析"
},
{
"question": "XX中心的员工九月在林芝工作的天数排名",
"answer": '''
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中心%')
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'
GROUP BY p."code", p."name"
ORDER BY "在林芝工作天数" DESC
LIMIT 1000;
''',
"tags": ["员工", "个人", "考勤", "工作地", "区域", "天数", "排名"],
"category": "工作地考勤统计分析"
},
]

View File

@@ -428,24 +428,6 @@ person_database_ddl = """
"role": "dimension",
"tags": ["联系方式", "通讯信息"]
},
{
"name": "DHDATASTA",
"type": "INT",
"comment": "推送状态",
"values": {
"0": "新增",
"1": "更新"
},
"role": "dimension",
"tags": ["数据同步", "系统状态"]
},
{
"name": "auditor1",
"type": "VARCHAR(36)",
"comment": "处室负责人",
"role": "dimension",
"tags": ["审批信息", "负责人信息"]
},
{
"name": "person_count",
"type": "INT",