ShynBui commited on
Commit
2daf2bc
·
verified ·
1 Parent(s): 6c78e86

Create fewshot.py

Browse files
Files changed (1) hide show
  1. fewshot.py +1442 -0
fewshot.py ADDED
@@ -0,0 +1,1442 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ examples = [
2
+ {"input": "Tình trạng cửa hàng nào là Open và Clean vào lúc 09:00 AM ngày 2024-10-10?",
3
+ "query": """SELECT StoreId
4
+ FROM StoreStatus
5
+ WHERE Status = 'Open'
6
+ AND CleanlinessStatus = 'Clean'
7
+ AND OpeningTime <= '2024-10-10 09:00:00'"""},
8
+ {"input": "Có bao nhiêu ca làm việc đã được ghi nhận trong tháng 10 năm 2024?",
9
+ "query": """SELECT COUNT(*) AS TotalShifts
10
+ FROM ShiftManagement
11
+ WHERE YYYYMMDD LIKE '202410%';"""},
12
+ {"input": "Ai là người lớn tuổi nhất công ty? Liệt kê thông tin cụ thể của người đó?",
13
+ "query": """SELECT e.FullName,
14
+ strftime('%Y', 'now') - substr(ed.Birthday, 1, 4) AS Age,
15
+ ed.Wallet
16
+ FROM EmployeeDetail ed join Employee e on ed.Wallet = e.Wallet
17
+ ORDER BY Age DESC
18
+ LIMIT 1;"""},
19
+ {"input": "Có bao nhiêu nhân viên vừa xin nghỉ phép và vừa được thanh toán trong tháng trước?",
20
+ "query": """SELECT COUNT(DISTINCT Employee) AS NumberOfEmployees
21
+ FROM ShiftStatus
22
+ WHERE IsLeavePermission = 1
23
+ AND IsPaidLeave = 1
24
+ AND CAST(substr(YYYYMMDD, 1, 6) AS INTEGER) = CAST(strftime('%Y%m', 'now', '-1 month') AS INTEGER);"""},
25
+ {"input": "Những nhân viên nào rời văn phòng sớm nhiều nhất?",
26
+ "query": """SELECT
27
+ E.FullName,
28
+ COUNT(SS.IsComebackSoon) AS EarlyLeaveCount
29
+ FROM
30
+ ShiftStatus SS
31
+ JOIN
32
+ Employee E ON SS.Employee = E.Wallet
33
+ WHERE
34
+ SS.IsComebackSoon = 1
35
+ GROUP BY
36
+ E.FullName
37
+ ORDER BY
38
+ EarlyLeaveCount DESC"""},
39
+ {"input": "Lấy danh sách tất cả các nhân viên có trạng thái 'PRESENT' trong ca làm việc hôm nay?", "query": """SELECT Employee, ShiftStatus
40
+ FROM ShiftManagement
41
+ WHERE CAST(YYYYMMDD AS INTEGER) = CAST(STRFTIME('%Y%m%d', 'now') AS INTEGER)
42
+ AND ShiftStatus = 'PRESENT';
43
+ """},
44
+ {"input": "Lấy danh sách tên tất cả các nhân viên có trạng thái 'PRESENT' trong ca làm việc hôm nay?", "query": """SELECT e.FullName, sm.ShiftStatus
45
+ FROM ShiftManagement sm
46
+ JOIN Employee e ON sm.Employee = e.Wallet
47
+ WHERE CAST(substr(sm.YYYYMMDD, 1, 8) AS INTEGER) = CAST(strftime('%Y%m%d', 'now') AS INTEGER)
48
+ AND sm.ShiftStatus = 'PRESENT';
49
+ ;
50
+ """},
51
+ {
52
+ "input": "Những nhân viên nào có phê duyệt đi trễ trong 7 ngày qua?",
53
+ "query": """SELECT Employee, LatePermissionStatus, LatePermissionApproval
54
+ FROM ShiftManagement
55
+ WHERE LatePermissionStatus = 'PERMISSION'
56
+ AND CAST(YYYYMMDD AS INTEGER) >= CAST(STRFTIME('%Y%m%d', DATE('now', '-7 days')) AS INTEGER);
57
+ """,
58
+ },
59
+ {
60
+ "input": "Lấy tất cả nhân viên đã có check-in và check-out trong ngày hôm nay?",
61
+ "query": """SELECT Employee, CheckInTime, CheckOutTime
62
+ FROM ShiftManagement
63
+ WHERE CAST(YYYYMMDD AS INTEGER) = CAST(strftime('%Y%m%d', 'now') AS INTEGER)
64
+ AND CheckInTime IS NOT NULL
65
+ AND CheckOutTime IS NOT NULL;
66
+ """,
67
+ },
68
+ {
69
+ "input": "Lấy danh sách nhân viên đã có nghỉ phép có lương trong tháng này?",
70
+ "query": """SELECT Employee, IsPaidLeave
71
+ FROM ShiftStatus
72
+ WHERE IsPaidLeave = 1
73
+ AND YYYYMMDD BETWEEN STRFTIME('%Y%m%d', DATE('now', 'start of month'))
74
+ AND STRFTIME('%Y%m%d', DATE('now', 'start of month', '+1 month', '-1 day'));
75
+ """
76
+ },
77
+ {
78
+ "input": "Hiện tại có bao nhiêu nhân viên nam và nữ?",
79
+ "query": """SELECT Gender, COUNT(*) AS NumberOfEmployees
80
+ FROM EmployeeDetail
81
+ GROUP BY Gender;
82
+
83
+ """
84
+ },
85
+ {
86
+ "input": "Số điện thoại của nhân viên tên Employee 2?",
87
+ "query": """SELECT ed.PhoneNumber
88
+ FROM Employee e
89
+ JOIN EmployeeDetail ed ON e.Wallet = ed.Wallet
90
+ WHERE e.FullName = 'Employee 2';
91
+ """
92
+ },
93
+ {
94
+ "input": "Lấy danh sách tất cả các nhân viên có trạng thái 'PRESENT' trong ca làm việc hôm nay?",
95
+ "query": """SELECT Employee, ShiftStatus
96
+ FROM ShiftManagement
97
+ WHERE CAST(YYYYMMDD AS INTEGER) = CAST(STRFTIME('%Y%m%d', 'now') AS INTEGER)
98
+ AND ShiftStatus = 'PRESENT';
99
+ """
100
+ },
101
+ {
102
+ "input": "Lấy danh sách tên tất cả các nhân viên có trạng thái 'PRESENT' trong ca làm việc hôm nay?",
103
+ "query": """SELECT e.FullName, sm.ShiftStatus
104
+ FROM ShiftManagement sm
105
+ JOIN Employee e ON sm.Employee = e.Wallet
106
+ WHERE sm.YYYYMMDD = STRFTIME('%Y%m%d', 'now')
107
+ AND sm.ShiftStatus = 'PRESENT';
108
+ """
109
+ },
110
+ {
111
+ "input": "Lấy danh sách nhân viên đi trễ và có phép trong ngày hôm nay?",
112
+ "query": """SELECT e.FullName, ss.IsLate, ss.IsLatePermission
113
+ FROM ShiftStatus ss
114
+ JOIN Employee e ON ss.Employee = e.Wallet
115
+ WHERE ss.YYYYMMDD = STRFTIME('%Y%m%d', 'now')
116
+ AND ss.IsLate = 1
117
+ AND ss.IsLatePermission = 1;
118
+ """
119
+ },
120
+ {
121
+ "input": "Lấy thông tin nhân viên và trạng thái đi muộn không phép trong tuần này?",
122
+ "query": """SELECT e.FullName, sm.ShiftStatus, sm.LatePermissionStatus
123
+ FROM ShiftManagement sm
124
+ JOIN Employee e ON sm.Employee = e.Wallet
125
+ WHERE sm.YYYYMMDD BETWEEN STRFTIME('%Y%m%d', 'now', 'weekday 0', '-6 days') AND STRFTIME('%Y%m%d', 'now', 'weekday 0')
126
+ AND sm.LatePermissionStatus = 'NO_PERMISSION';"""
127
+ },
128
+ {
129
+ "input": "Lấy danh sách nhân viên đã điểm danh làm thêm giờ hôm nay?",
130
+ "query": """SELECT e.FullName, a.Type, a.IsOvertime
131
+ FROM Attendance a
132
+ JOIN Employee e ON a.Employee = e.Wallet
133
+ WHERE CAST(a.YYYYMMDD AS INTEGER) = CAST(STRFTIME('%Y%m%d', 'now') AS INTEGER)
134
+ AND a.IsOvertime = 1;
135
+ """
136
+ },
137
+ {
138
+ "input": "Lấy danh sách nhân viên đã nghỉ phép hôm nay?",
139
+ "query": """SELECT e.FullName, ss.IsLeavePermission
140
+ FROM ShiftStatus ss
141
+ JOIN Employee e ON ss.Employee = e.Wallet
142
+ WHERE ss.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND ss.IsLeavePermission = TRUE;"""
143
+ },
144
+ {
145
+ "input": "Lấy danh sách nhân viên nghỉ phép có lương trong tuần này?",
146
+ "query": """SELECT e.FullName, ss.IsPaidLeave
147
+ FROM ShiftStatus ss
148
+ JOIN Employee e ON ss.Employee = e.Wallet
149
+ WHERE ss.YYYYMMDD BETWEEN STRFTIME('%Y%m%d', 'now', 'weekday 0', '-6 days') AND STRFTIME('%Y%m%d', 'now', 'weekday 0')
150
+ AND ss.IsPaidLeave = TRUE;"""
151
+ },
152
+ {
153
+ "input": "Lấy thông tin nhân viên check-in hộ người khác hôm nay?",
154
+ "query": """SELECT e.FullName, a.Type
155
+ FROM Attendance a
156
+ JOIN Employee e ON a.Employee = e.Wallet
157
+ WHERE a.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND a.Type = 'CHECK_IN_ON_BEHALF';"""
158
+ },
159
+ {
160
+ "input": "Lấy danh sách các ca làm việc của nhân viên trong ngày hôm nay?",
161
+ "query": """SELECT e.FullName, sm.ShiftId, sm.CheckInTime, sm.CheckOutTime, sm.ShiftStatus
162
+ FROM ShiftManagement sm
163
+ JOIN Employee e ON sm.Employee = e.Wallet
164
+ WHERE sm.YYYYMMDD = STRFTIME('%Y%m%d', 'now');"""
165
+ },
166
+ {
167
+ "input": "Lấy danh sách nhân viên đã check-in hôm nay nhưng chưa check-out?",
168
+ "query": """SELECT e.FullName, sm.CheckInTime, sm.CheckOutTime
169
+ FROM ShiftManagement sm
170
+ JOIN Employee e ON sm.Employee = e.Wallet
171
+ WHERE sm.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND sm.CheckInTime IS NOT NULL AND sm.CheckOutTime IS NULL;"""
172
+ },
173
+ {
174
+ "input": "Lấy thông tin nhân viên có làm thêm giờ hôm nay và trạng thái phê duyệt làm thêm giờ?",
175
+ "query": """SELECT e.FullName, a.IsOvertime, a.OvertimeStatus
176
+ FROM Attendance a
177
+ JOIN Employee e ON a.Employee = e.Wallet
178
+ WHERE a.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND a.IsOvertime = TRUE;"""
179
+ },
180
+ {
181
+ "input": "Lấy danh sách nhân viên có mặt tại địa điểm làm việc cụ thể hôm nay?",
182
+ "query": """SELECT e.FullName, a.WorkPlaceAttendance, w.LatLon
183
+ FROM Attendance a
184
+ JOIN Employee e ON a.Employee = e.Wallet
185
+ JOIN WorkPlaceAttendance w ON a.WorkPlaceAttendance = w.WorkPlaceId
186
+ WHERE a.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND a.Type IN ('CHECK_IN', 'CHECK_OUT');"""
187
+ },
188
+ {
189
+ "input": "Lấy danh sách nhân viên có check-in tại một địa điểm làm việc cụ thể?",
190
+ "query": """SELECT e.FullName, a.Time, w.LatLon
191
+ FROM Attendance a
192
+ JOIN Employee e ON a.Employee = e.Wallet
193
+ JOIN WorkPlaceAttendance w ON a.WorkPlaceAttendance = w.WorkPlaceId
194
+ WHERE w.LatLon = 'TOA_DO_CU_THE' AND a.Type = 'CHECK_IN';"""
195
+ },
196
+ {
197
+ "input": "Lấy danh sách nhân viên có trạng thái làm thêm giờ chưa được đọc?",
198
+ "query": """SELECT e.FullName, a.OvertimeStatus
199
+ FROM Attendance a
200
+ JOIN Employee e ON a.Employee = e.Wallet
201
+ WHERE a.OvertimeStatus = 'UN_READ';"""
202
+ },
203
+ {
204
+ "input": "Lấy thông tin nhân viên có đi sớm về sớm hôm nay?",
205
+ "query": """SELECT e.FullName, sm.ComeBackSoonPermissionStatus
206
+ FROM ShiftManagement sm
207
+ JOIN Employee e ON sm.Employee = e.Wallet
208
+ WHERE sm.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND sm.ComeBackSoonPermissionStatus = 'PERMISSION';"""
209
+ },
210
+ {
211
+ "input": "Lấy danh sách nhân viên không đi làm trong tuần này?",
212
+ "query": """SELECT e.FullName, ss.IsPresent
213
+ FROM ShiftStatus ss
214
+ JOIN Employee e ON ss.Employee = e.Wallet
215
+ WHERE ss.YYYYMMDD BETWEEN STRFTIME('%Y%m%d', 'now', 'weekday 0', '-6 days') AND STRFTIME('%Y%m%d', 'now', 'weekday 0') AND ss.IsPresent = FALSE;"""
216
+ },
217
+ {
218
+ "input": "Lấy danh sách nhân viên đi trễ không phép và vắng mặt hôm nay?",
219
+ "query": """SELECT e.FullName, ss.IsLate, ss.IsLatePermission, ss.IsPresent
220
+ FROM ShiftStatus ss
221
+ JOIN Employee e ON ss.Employee = e.Wallet
222
+ WHERE ss.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND ss.IsLate = TRUE AND ss.IsLatePermission = FALSE AND ss.IsPresent = FALSE;"""
223
+ },
224
+ {
225
+ "input": "Lấy thông tin các ca làm việc mà nhân viên đã đi trễ hôm nay nhưng có phép?",
226
+ "query": """SELECT e.FullName, sm.LatePermissionApproval, sm.LatePermissionStatus
227
+ FROM ShiftManagement sm
228
+ JOIN Employee e ON sm.Employee = e.Wallet
229
+ WHERE sm.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND sm.LatePermissionStatus = 'PERMISSION';"""
230
+ },
231
+ {
232
+ "input": "Lấy danh sách nhân viên có ngày sinh trong tháng này?",
233
+ "query": """SELECT e.FullName, ed.Birthday
234
+ FROM EmployeeDetail ed
235
+ JOIN Employee e ON ed.Wallet = e.Wallet
236
+ WHERE STRFTIME('%m', ed.Birthday, 'unixepoch') = STRFTIME('%m', 'now');"""
237
+ },
238
+ {
239
+ "input": "Lấy thông tin số người phụ thuộc của nhân viên?",
240
+ "query": """SELECT e.FullName, ed.NumberOfDependents
241
+ FROM EmployeeDetail ed
242
+ JOIN Employee e ON ed.Wallet = e.Wallet;"""
243
+ },
244
+ {
245
+ "input": "Lấy thông tin nhân viên có thu nhập chịu thuế và thuế thu nhập cá nhân?",
246
+ "query": """SELECT e.FullName, ed.TaxableSalary, ed.PersonalIncomeTax
247
+ FROM EmployeeDetail ed
248
+ JOIN Employee e ON ed.Wallet = e.Wallet
249
+ WHERE ed.TaxableSalary > 0;"""
250
+ },
251
+ {
252
+ "input": "Lấy danh sách nhân viên chưa có sơ yếu lý lịch?",
253
+ "query": """SELECT e.FullName, ed.HasResume
254
+ FROM EmployeeDetail ed
255
+ JOIN Employee e ON ed.Wallet = e.Wallet
256
+ WHERE ed.HasResume = FALSE;"""
257
+ },
258
+ {
259
+ "input": "Lấy danh sách nhân viên có giấy khám sức khỏe?",
260
+ "query": """SELECT e.FullName, ed.HasHealthCertification
261
+ FROM EmployeeDetail ed
262
+ JOIN Employee e ON ed.Wallet = e.Wallet
263
+ WHERE ed.HasHealthCertification = TRUE;"""
264
+ },
265
+ {
266
+ "input": "Lấy tổng số nhân viên có trạng thái 'PRESENT' trong ca làm việc hôm nay?",
267
+ "query": """SELECT COUNT(*) AS TotalPresentEmployees
268
+ FROM ShiftManagement
269
+ WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND ShiftStatus = 'PRESENT';"""
270
+ },
271
+ {
272
+ "input": "Lấy tổng số nhân viên đi trễ trong ngày hôm nay?",
273
+ "query": """SELECT COUNT(*) AS TotalLateEmployees
274
+ FROM ShiftStatus
275
+ WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND IsLate = TRUE;"""
276
+ },
277
+ {
278
+ "input": "Lấy tổng số nhân viên đã nghỉ phép hôm nay?",
279
+ "query": """SELECT COUNT(*) AS TotalLeaveEmployees
280
+ FROM ShiftStatus
281
+ WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND IsLeavePermission = TRUE;"""
282
+ },
283
+ {
284
+ "input": "Lấy tổng số nhân viên đã làm thêm giờ hôm nay?",
285
+ "query": """SELECT COUNT(*) AS TotalOvertimeEmployees
286
+ FROM Attendance
287
+ WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND IsOvertime = TRUE;"""
288
+ },
289
+ {
290
+ "input": "Lấy tổng số nhân viên có làm thêm giờ mà trạng thái chưa được đọc?",
291
+ "query": """SELECT COUNT(*) AS TotalUnreadOvertimeEmployees
292
+ FROM Attendance
293
+ WHERE OvertimeStatus = 'UN_READ';"""
294
+ },
295
+ {
296
+ "input": "Lấy tổng số nhân viên có mặt tại một địa điểm làm việc cụ thể hôm nay?",
297
+ "query": """SELECT COUNT(*) AS TotalPresentAtLocation
298
+ FROM Attendance
299
+ JOIN WorkPlaceAttendance ON Attendance.WorkPlaceAttendance = WorkPlaceAttendance.WorkPlaceId
300
+ WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND Type IN ('CHECK_IN', 'CHECK_OUT') AND WorkPlaceAttendance.LatLon = 'TOA_DO_CU_THE';"""
301
+ },
302
+ {
303
+ "input": "Lấy tổng số nhân viên đi sớm về sớm có phép hôm nay?",
304
+ "query": """SELECT COUNT(*) AS TotalComeBackSoonWithPermission
305
+ FROM ShiftManagement
306
+ WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND ComeBackSoonPermissionStatus = 'PERMISSION';"""
307
+ },
308
+ {
309
+ "input": "Lấy tổng số nhân viên đi làm trong tuần này?",
310
+ "query": """SELECT COUNT(*) AS TotalEmployeesPresent
311
+ FROM ShiftStatus
312
+ WHERE YYYYMMDD BETWEEN STRFTIME('%Y%m%d', 'now', 'weekday 0', '-6 days') AND STRFTIME('%Y%m%d', 'now', 'weekday 0') AND IsPresent = TRUE;"""
313
+ },
314
+ {
315
+ "input": "Lấy tổng số nhân viên nghỉ phép có lương trong tuần này?",
316
+ "query": """SELECT COUNT(*) AS TotalPaidLeaveEmployees
317
+ FROM ShiftStatus
318
+ WHERE YYYYMMDD BETWEEN STRFTIME('%Y%m%d', 'now', 'weekday 0', '-6 days') AND STRFTIME('%Y%m%d', 'now', 'weekday 0') AND IsPaidLeave = TRUE;"""
319
+ },
320
+ {
321
+ "input": "Lấy tổng số nhân viên đi làm không phép trong tuần này?",
322
+ "query": """SELECT COUNT(*) AS TotalAbsentWithoutPermission
323
+ FROM ShiftStatus
324
+ WHERE YYYYMMDD BETWEEN STRFTIME('%Y%m%d', 'now', 'weekday 0', '-6 days') AND STRFTIME('%Y%m%d', 'now', 'weekday 0') AND IsPresent = FALSE AND IsLeavePermission = FALSE;"""
325
+ },
326
+ {
327
+ "input": "Lấy tổng số nhân viên đi trễ không phép hôm nay?",
328
+ "query": """SELECT COUNT(*) AS TotalLateWithoutPermission
329
+ FROM ShiftStatus
330
+ WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND IsLate = TRUE AND IsLatePermission = FALSE;"""
331
+ },
332
+ {
333
+ "input": "Lấy tổng số nhân viên chưa có sơ yếu lý lịch?",
334
+ "query": """SELECT COUNT(*) AS TotalWithoutResume
335
+ FROM EmployeeDetail
336
+ WHERE HasResume = FALSE;"""
337
+ },
338
+ {
339
+ "input": "Lấy tổng số nhân viên có giấy khám sức khỏe?",
340
+ "query": """SELECT COUNT(*) AS TotalWithHealthCertification
341
+ FROM EmployeeDetail
342
+ WHERE HasHealthCertification = TRUE;"""
343
+ },
344
+ {
345
+ "input": "Lấy tổng số nhân viên có bằng tốt nghiệp?",
346
+ "query": """SELECT COUNT(*) AS TotalWithGraduationDegree
347
+ FROM EmployeeDetail
348
+ WHERE HasGraduationDegree = TRUE;"""
349
+ },
350
+ {
351
+ "input": "Lấy tổng số nhân viên có mã bảo hiểm xã hội?",
352
+ "query": """SELECT COUNT(*) AS TotalWithSocialInsuranceId
353
+ FROM EmployeeDetail
354
+ WHERE SocialInsuranceId IS NOT NULL AND SocialInsuranceId <> '';"""
355
+ },
356
+ {
357
+ "input": "Lấy tổng số nhân viên có mã số thuế?",
358
+ "query": """SELECT COUNT(*) AS TotalWithTaxId
359
+ FROM EmployeeDetail
360
+ WHERE TaxId IS NOT NULL AND TaxId <> '';"""
361
+ },
362
+ {
363
+ "input": "Lấy tổng số nhân viên đã điểm danh check-in hôm nay?",
364
+ "query": """SELECT COUNT(*) AS TotalCheckIns
365
+ FROM Attendance
366
+ WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND Type = 'CHECK_IN';"""
367
+ },
368
+ {
369
+ "input": "Lấy tổng số nhân viên đã điểm danh check-out hôm nay?",
370
+ "query": """SELECT COUNT(*) AS TotalCheckOuts
371
+ FROM Attendance
372
+ WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND Type = 'CHECK_OUT';"""
373
+ },
374
+ {
375
+ "input": "Lấy tổng số nhân viên đã check-in hộ người khác hôm nay?",
376
+ "query": """SELECT COUNT(*) AS TotalCheckInOnBehalf
377
+ FROM Attendance
378
+ WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND Type = 'CHECK_IN_ON_BEHALF';"""
379
+ },
380
+ {
381
+ "input": "Lấy tổng số nhân viên đã check-out hộ người khác hôm nay?",
382
+ "query": """SELECT COUNT(*) AS TotalCheckOutOnBehalf
383
+ FROM Attendance
384
+ WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND Type = 'CHECK_OUT_ON_BEHALF';"""
385
+ },
386
+ {
387
+ "input": "Lấy tổng số nhân viên có số người phụ thuộc lớn hơn 2?",
388
+ "query": """SELECT COUNT(*) AS TotalEmployeesWithMoreThanTwoDependents
389
+ FROM EmployeeDetail
390
+ WHERE NumberOfDependents > 2;"""
391
+ },
392
+ {
393
+ "input": "Lấy tổng số nhân viên có hợp đồng lao động loại dài hạn?",
394
+ "query": """SELECT COUNT(*) AS TotalLongTermContractEmployees
395
+ FROM EmployeeDetail
396
+ WHERE TypeOfContractId = (SELECT TypeOfContractId FROM ContractType WHERE Name = 'Long Term');"""
397
+ },
398
+ {
399
+ "input": "Lấy tổng số nhân viên có hợp đồng lao động loại ngắn hạn?",
400
+ "query": """SELECT COUNT(*) AS TotalShortTermContractEmployees
401
+ FROM EmployeeDetail
402
+ WHERE TypeOfContractId = (SELECT TypeOfContractId FROM ContractType WHERE Name = 'Short Term');"""
403
+ },
404
+ {
405
+ "input": "Lấy tổng số nhân viên có hợp đồng part-time?",
406
+ "query": """SELECT COUNT(*) AS TotalPartTimeEmployees
407
+ FROM EmployeeDetail
408
+ WHERE TypeOfWorkId = (SELECT TypeOfWorkId FROM WorkType WHERE Name = 'Part-Time');"""
409
+ },
410
+ {
411
+ "input": "Lấy tổng số nhân viên đã nghỉ phép không lương trong tháng này?",
412
+ "query": """SELECT COUNT(*) AS TotalUnpaidLeaveEmployees
413
+ FROM ShiftStatus
414
+ WHERE STRFTIME('%m', YYYYMMDD) = STRFTIME('%m', 'now') AND IsPaidLeave = FALSE AND IsLeavePermission = TRUE;"""
415
+ },
416
+ {
417
+ "input": "Lấy tổng số nhân viên đã nghỉ phép có lương trong tháng này?",
418
+ "query": """SELECT COUNT(*) AS TotalPaidLeaveEmployees
419
+ FROM ShiftStatus
420
+ WHERE STRFTIME('%m', YYYYMMDD) = STRFTIME('%m', 'now') AND IsPaidLeave = TRUE AND IsLeavePermission = TRUE;"""
421
+ },
422
+ {
423
+ "input": "Lấy tổng số nhân viên đã có giấy khai sinh?",
424
+ "query": """SELECT COUNT(*) AS TotalWithBirthCertificate
425
+ FROM EmployeeDetail
426
+ WHERE HasBirthCertificate = TRUE;"""
427
+ },
428
+ {
429
+ "input": "Lấy tổng số nhân viên có chứng minh nhân dân hoặc căn cước công dân?",
430
+ "query": """SELECT COUNT(*) AS TotalWithCitizenIdentification
431
+ FROM EmployeeDetail
432
+ WHERE HasCitizenIdentification = TRUE;"""
433
+ },
434
+ {
435
+ "input": "Lấy tổng số nhân viên có sổ hộ khẩu?",
436
+ "query": """SELECT COUNT(*) AS TotalWithHouseRegistrationBook
437
+ FROM EmployeeDetail
438
+ WHERE HasHouseRegistrationBook = TRUE;"""
439
+ },
440
+ {
441
+ "input": "Lấy tổng số nhân viên có thu nhập chịu thu�� trên 20 triệu đồng?",
442
+ "query": """SELECT COUNT(*) AS TotalHighTaxableSalary
443
+ FROM EmployeeDetail
444
+ WHERE TaxableSalary > 20000000;"""
445
+ },
446
+ {
447
+ "input": "Lấy tổng số nhân viên có thu nhập chịu thuế dưới 10 triệu đồng?",
448
+ "query": """SELECT COUNT(*) AS TotalLowTaxableSalary
449
+ FROM EmployeeDetail
450
+ WHERE TaxableSalary < 10000000;"""
451
+ },
452
+ {
453
+ "input": "Lấy tổng số nhân viên có thuế thu nhập cá nhân trên 5 triệu đồng?",
454
+ "query": """SELECT COUNT(*) AS TotalHighPersonalIncomeTax
455
+ FROM EmployeeDetail
456
+ WHERE PersonalIncomeTax > 5000000;"""
457
+ },
458
+ {
459
+ "input": "Lấy tổng số nhân viên đã điểm danh làm thêm giờ hôm nay và được phê duyệt?",
460
+ "query": """SELECT COUNT(*) AS TotalApprovedOvertimeEmployees
461
+ FROM Attendance
462
+ WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND IsOvertime = TRUE AND OvertimeStatus = 'APPROVAL';"""
463
+ },
464
+ {
465
+ "input": "Nhân viên nghỉ nhiều nhất trong 7 ngày qua?",
466
+ "query": """SELECT e.FullName, COUNT(ss.Employee) AS TotalLeaves
467
+ FROM ShiftStatus ss
468
+ JOIN Employee e ON ss.Employee = e.Wallet
469
+ WHERE ss.YYYYMMDD BETWEEN STRFTIME('%Y%m%d', 'now', '-6 days') AND STRFTIME('%Y%m%d', 'now')
470
+ AND ss.IsLeavePermission = TRUE
471
+ GROUP BY ss.Employee
472
+ ORDER BY TotalLeaves DESC
473
+ LIMIT 1;
474
+ """
475
+ },
476
+ {
477
+ "input": "Nhân viên nghỉ nhiều nhất trong 1 tháng qua?",
478
+ "query": """SELECT e.FullName, COUNT(*) AS TotalDaysOff
479
+ FROM ShiftStatus ss
480
+ JOIN Employee e ON ss.Employee = e.Wallet
481
+ WHERE ss.IsLeavePermission = TRUE
482
+ AND ss.YYYYMMDD BETWEEN STRFTIME('%Y%m%d', 'now', '-1 month') AND STRFTIME('%Y%m%d', 'now')
483
+ GROUP BY e.FullName
484
+ ORDER BY TotalDaysOff DESC
485
+ LIMIT 1;
486
+ """
487
+ },
488
+ {
489
+ "input": "Có bao nhiêu khách hàng nam/nữ ghé thăm cửa hàng hôm nay?",
490
+ "query": """SELECT Gender, COUNT(*) AS CustomerCount
491
+ FROM CustomerAtCheckInOut
492
+ JOIN CheckInOut ON CustomerAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId
493
+ WHERE DATE(CheckInOut.CheckTime) = DATE('now') -- Ngày hôm nay
494
+ GROUP BY Gender;
495
+ """
496
+ },
497
+ {
498
+ "input": "Có bao nhiêu khách hàng nam/nữ ghé thăm cửa hàng 2 ngày gần đây?",
499
+ "query": """SELECT Gender, COUNT(*) AS CustomerCount
500
+ FROM CustomerAtCheckInOut
501
+ JOIN CheckInOut ON CustomerAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId
502
+ WHERE DATE(CheckInOut.CheckTime) >= DATE('now', '-2 days') -- 2 ngày gần đây
503
+ GROUP BY Gender;
504
+ """
505
+ },
506
+ {
507
+ "input": "Có sự khác biệt nào về cảm xúc của khách hàng giữa các nhóm tuổi không?",
508
+ "query": """SELECT
509
+ CASE
510
+ WHEN Age BETWEEN 18 AND 30 THEN '18-30'
511
+ WHEN Age BETWEEN 31 AND 45 THEN '31-45'
512
+ WHEN Age BETWEEN 46 AND 60 THEN '46-60'
513
+ ELSE '60+'
514
+ END AS AgeGroup,
515
+ Emotion,
516
+ COUNT(*) AS EmotionCount
517
+ FROM CustomerAtCheckInOut
518
+ GROUP BY AgeGroup, Emotion
519
+ ORDER BY AgeGroup, Emotion;
520
+ """
521
+ },
522
+ {
523
+ "input": "Bao nhiêu khách hàng cảm thấy khó chịu hôm nay?",
524
+ "query": """SELECT COUNT(*) AS UncomfortableCustomerCount
525
+ FROM CustomerAtCheckInOut
526
+ JOIN CheckInOut ON CustomerAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId
527
+ WHERE DATE(CheckInOut.CheckTime) = DATE('now') -- Ngày hôm nay
528
+ AND Emotion IN ('Angry', 'Sad', 'Disgust', 'Fear');
529
+ """
530
+ },
531
+ {
532
+ "input": "Lý do chính khiến khách hàng bỏ về là gì?",
533
+ "query": """SELECT CustomerReactionReason, COUNT(*) AS ReasonCount
534
+ FROM CustomerAtCheckInOut
535
+ GROUP BY CustomerReactionReason
536
+ ORDER BY ReasonCount DESC
537
+ LIMIT 1;
538
+ """
539
+ },
540
+ {
541
+ "input": "Thời điểm nào trong ngày khách hàng ghé thăm nhiều nhất?",
542
+ "query": """SELECT STRFTIME('%H', CheckTime) AS Hour, COUNT(*) AS CustomerCount
543
+ FROM CheckInOut
544
+ GROUP BY STRFTIME('%H', CheckTime)
545
+ ORDER BY CustomerCount DESC
546
+ LIMIT 1;
547
+ """
548
+ },
549
+ {
550
+ "input": "Tổng số khách hàng trong cửa hàng hiện tại (hôm trước/ theo khung giờ) là bao nhiêu?",
551
+ "query": """SELECT
552
+ 'Khách hàng hiện tại' AS Thông_số,
553
+ (SELECT NumberofCustomer
554
+ FROM CheckInOut
555
+ WHERE CheckTime = (SELECT MAX(CheckTime) FROM CheckInOut)) AS Giá_trị
556
+ UNION ALL
557
+ SELECT
558
+ 'Khách hàng ngày hôm qua' AS Thông_số,
559
+ (SELECT SUM(NumberofCustomer)
560
+ FROM CheckInOut
561
+ WHERE DATE(CheckTime) = DATE('now', '-1 day')) AS Giá_trị
562
+ UNION ALL
563
+ SELECT
564
+ 'Khách hàng hôm nay' AS Thông_số,
565
+ (SELECT SUM(NumberofCustomer)
566
+ FROM CheckInOut
567
+ WHERE DATE(CheckTime) = DATE('now')) AS Giá_trị
568
+ """
569
+ },
570
+ {
571
+ "input": "Tỉ lệ giới tính của khách hàng (nam/nữ) trong ngày hôm nay?",
572
+ "query": """SELECT
573
+ Gender,
574
+ COUNT(*) AS GenderCount
575
+ FROM CustomerAtCheckInOut c
576
+ JOIN CheckInOut cio ON c.CheckInOutId = cio.CheckInOutId
577
+ WHERE DATE(cio.CheckTime) = DATE('now') -- Filters records from today's date
578
+ GROUP BY Gender;
579
+
580
+ """
581
+ },
582
+ {
583
+ "input": "Nhóm tuổi nào chiếm đa số trong cửa hàng hôm nay?",
584
+ "query": """WITH TodayCheckInOut AS (
585
+ SELECT CheckInOutId
586
+ FROM CheckInOut
587
+ WHERE DATE(CheckTime) = DATE('now') -- Lọc các bản ghi của hôm nay
588
+ ),
589
+ AgeGroups AS (
590
+ SELECT
591
+ CASE
592
+ WHEN Age BETWEEN 18 AND 30 THEN '18-30'
593
+ WHEN Age BETWEEN 31 AND 45 THEN '31-45'
594
+ WHEN Age BETWEEN 46 AND 60 THEN '46-60'
595
+ ELSE '60+'
596
+ END AS AgeGroup,
597
+ COUNT(*) AS Count
598
+ FROM CustomerAtCheckInOut
599
+ WHERE CheckInOutId IN (SELECT CheckInOutId FROM TodayCheckInOut) -- Chỉ lấy các khách hàng của hôm nay
600
+ GROUP BY AgeGroup
601
+ )
602
+ SELECT AgeGroup, Count
603
+ FROM AgeGroups
604
+ ORDER BY Count DESC
605
+ """
606
+ },
607
+ {
608
+ "input": "Tỉ lệ giới tính của khách hàng (nam/nữ) trong ngày hôm nay?",
609
+ "query": """SELECT
610
+ Gender,
611
+ COUNT(*) AS GenderCount
612
+ FROM CustomerAtCheckInOut c
613
+ JOIN CheckInOut cio ON c.CheckInOutId = cio.CheckInOutId
614
+ WHERE DATE(cio.CheckTime) = DATE('now') -- Filters records from today's date
615
+ GROUP BY Gender;
616
+
617
+ """
618
+ },
619
+ {
620
+ "input": "Có bao nhiêu khách hàng thuộc nhóm Gen Z trong ngày hôm nay?",
621
+ "query": """SELECT COUNT(*) AS GenZCustomerCount
622
+ FROM CustomerAtCheckInOut c
623
+ JOIN CheckInOut ci ON c.CheckInOutId = ci.CheckInOutId
624
+ WHERE (strftime('%Y', 'now') - c.Age) BETWEEN 1997 AND 2012
625
+ AND DATE(ci.CheckTime) = DATE('now');
626
+ """
627
+ },
628
+ {
629
+ "input": "Tỉ lệ khách hàng có độ tuổi trên 50 trong cửa hàng hôm nay là bao nhiêu?",
630
+ "query": """WITH CustomersToday AS (
631
+ SELECT
632
+ CustomerId,
633
+ Age,
634
+ CheckInOut.CheckTime
635
+ FROM
636
+ CustomerAtCheckInOut
637
+ INNER JOIN
638
+ CheckInOut ON CustomerAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId
639
+ WHERE
640
+ DATE(CheckInOut.CheckTime) = DATE('now') -- Adjust 'now' if the date is stored in UTC or needs conversion
641
+ ),
642
+ CustomersOver50 AS (
643
+ SELECT
644
+ COUNT(*) AS Over50Count
645
+ FROM
646
+ CustomersToday
647
+ WHERE
648
+ Age > 50
649
+ ),
650
+ TotalCustomersToday AS (
651
+ SELECT
652
+ COUNT(*) AS TotalCustomerCount
653
+ FROM
654
+ CustomersToday
655
+ )
656
+ SELECT
657
+ (CAST(Over50Count AS FLOAT) / TotalCustomerCount) * 100 AS PercentageOver50
658
+ FROM
659
+ CustomersOver50, TotalCustomersToday;
660
+ """
661
+ },
662
+ {
663
+ "input": "Có bao nhiêu khách hàng thuộc nhóm Gen Z trong ngày hôm nay?",
664
+ "query": """SELECT COUNT(*) AS GenZCustomerCount
665
+ FROM CustomerAtCheckInOut c
666
+ JOIN CheckInOut ci ON c.CheckInOutId = ci.CheckInOutId
667
+ WHERE (strftime('%Y', 'now') - c.Age) BETWEEN 1997 AND 2012
668
+ AND DATE(ci.CheckTime) = DATE('now');
669
+ """
670
+ },
671
+ {
672
+ "input": "Phân bố sắc tộc của khách hàng là như thế nào?",
673
+ "query": """SELECT
674
+ Ethnicity,
675
+ COUNT(CustomerId) AS CustomerCount,
676
+ ROUND(COUNT(CustomerId) * 100.0 / (SELECT COUNT(*) FROM CustomerAtCheckInOut), 2) AS Percentage
677
+ FROM
678
+ CustomerAtCheckInOut
679
+ GROUP BY
680
+ Ethnicity;
681
+ """
682
+ },
683
+ {
684
+ "input": "Khách hàng trong cửa hàng hôm nay mặc phong cách gì?",
685
+ "query": """SELECT CACIO.ClothingStyle, COUNT(CACIO.CustomerId) AS NumberOfCustomers
686
+ FROM CustomerAtCheckInOut CACIO
687
+ JOIN CheckInOut CIO ON CACIO.CheckInOutId = CIO.CheckInOutId
688
+ WHERE DATE(CIO.CheckTime) = DATE('now') -- Filters records for today
689
+ GROUP BY CACIO.ClothingStyle;
690
+ """
691
+ },
692
+ {
693
+ "input": "Có bao nhiêu khách hàng có ngoại hình thừa cân?",
694
+ "query": """SELECT COUNT(*) AS TotalCustomers
695
+ FROM CustomerAtCheckInOut
696
+ WHERE Appearance IN ('Overweight');
697
+ """
698
+ },
699
+ {
700
+ "input": "Có bao nhiêu khách hàng có ngoại hình thiếu cân?",
701
+ "query": """SELECT COUNT(*) AS TotalCustomers
702
+ FROM CustomerAtCheckInOut
703
+ WHERE Appearance IN ('Underweight');
704
+ """
705
+ },
706
+ {
707
+ "input": "Có bao nhiêu khách hàng có ngoại hình thiếu cân và thừa cân?",
708
+ "query": """SELECT COUNT(*) AS TotalCustomers
709
+ FROM CustomerAtCheckInOut
710
+ WHERE Appearance IN ('Underweight', 'Overweight');
711
+ """
712
+ },
713
+ {
714
+ "input": "Phong cách ăn mặc phổ biến của khách hàng trong tuần qua là gì?",
715
+ "query": """SELECT
716
+ ClothingStyle,
717
+ COUNT(ClothingStyle) AS StyleCount
718
+ FROM
719
+ CustomerAtCheckInOut CAC
720
+ JOIN
721
+ CheckInOut CIO ON CAC.CheckInOutId = CIO.CheckInOutId
722
+ WHERE
723
+ CIO.CheckTime >= DATETIME('now', '-7 days') -- Filter for the last 7 days
724
+ GROUP BY
725
+ ClothingStyle
726
+ ORDER BY
727
+ StyleCount DESC
728
+ LIMIT 1; -- Return the most popular clothing style
729
+ """
730
+ },
731
+ {
732
+ "input": "Số lượng khách hàng quốc tế ghé thăm cửa hàng hôm nay là bao nhiêu?",
733
+ "query": """SELECT COUNT(*) AS InternationalCustomers
734
+ FROM CustomerAtCheckInOut C
735
+ JOIN CheckInOut CI ON C.CheckInOutId = CI.CheckInOutId
736
+ WHERE C.Ethnicity IN ('White', 'Black') -- Assuming these represent international customers
737
+ AND DATE(CI.CheckTime) = DATE('now'); -- Checking visits made today
738
+ """
739
+ },
740
+ {
741
+ "input": "Bao nhiêu khách hàng đến quán theo nhóm gia đình trong ngày hôm nay?",
742
+ "query": """SELECT COUNT(*) AS FamilyGroupCustomerCount
743
+ FROM CustomerAtCheckInOut ca
744
+ JOIN CheckInOut ci ON ca.CheckInOutId = ci.CheckInOutId
745
+ WHERE ca.GroupType = 'Family group'
746
+ AND DATE(ci.CheckTime) = DATE('now');
747
+ """
748
+ },
749
+ {
750
+ "input": "Khách hàng solo hay đi theo nhóm đông hơn hôm nay?",
751
+ "query": """WITH CurrentDate AS (
752
+ -- Step 1: Lấy ngày hiện tại theo định dạng YYYYMMDD
753
+ SELECT strftime('%Y%m%d', 'now') AS Today
754
+ )
755
+
756
+ -- Step 2: Truy vấn để đếm số lượng khách hàng Solo và Group trong ngày hiện tại
757
+ SELECT
758
+ CASE WHEN GroupType = 'Solo' THEN 'Solo Customers' ELSE 'Group Customers' END AS CustomerType,
759
+ COUNT(*) AS CustomerCount
760
+ FROM CustomerAtCheckInOut
761
+ JOIN CheckInOut ON CustomerAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId
762
+ WHERE substr(CheckInOut.CheckTime, 1, 8) = (SELECT Today FROM CurrentDate)
763
+ GROUP BY CustomerType
764
+ ORDER BY CustomerCount DESC;
765
+
766
+ """
767
+ },
768
+ {
769
+ "input": "Khách hàng solo hay đi theo nhóm đông hơn hôm nay?",
770
+ "query": """-- Step 1: Set the current date in 'YYYY-MM-DD' format
771
+ WITH CurrentDate AS (
772
+ SELECT DATE('now') AS Today
773
+ )
774
+
775
+ -- Step 2: Query to count solo and group customers today
776
+ SELECT
777
+ CASE WHEN GroupType = 'Solo' THEN 'Solo Customers' ELSE 'Group Customers' END AS CustomerType,
778
+ COUNT(*) AS CustomerCount
779
+ FROM CustomerAtCheckInOut
780
+ JOIN CheckInOut ON CustomerAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId
781
+ WHERE DATE(CheckInOut.CheckTime) = (SELECT Today FROM CurrentDate)
782
+ GROUP BY CustomerType
783
+ ORDER BY CustomerCount DESC;
784
+ """
785
+ },
786
+ {
787
+ "input": "Khách hàng thường đến cửa hàng theo nhóm hay đơn lẻ trong 1 tháng qua?",
788
+ "query": """SELECT
789
+ GroupType,
790
+ COUNT(*) AS VisitCount
791
+ FROM
792
+ CustomerAtCheckInOut
793
+ WHERE
794
+ CheckInOutId IN (
795
+ SELECT CheckInOutId
796
+ FROM CheckInOut
797
+ WHERE CheckTime >= DATE('now', '-1 month')
798
+ )
799
+ GROUP BY
800
+ GroupType;
801
+ """
802
+ },
803
+ {
804
+ "input": "Có bao nhiêu nhân viên chưa check-in hôm nay?",
805
+ "query": """SELECT
806
+ GroupType,
807
+ COUNT(*) AS VisitCount
808
+ FROM
809
+ CustomerAtCheckInOut
810
+ WHERE
811
+ CheckInOutId IN (
812
+ SELECT CheckInOutId
813
+ FROM CheckInOut
814
+ WHERE CheckTime >= DATE('now', '-1 month')
815
+ )
816
+ GROUP BY
817
+ GroupType;
818
+ """
819
+ },
820
+ {
821
+ "input": "Khoảng thời gian check-in của tất cả nhân viên hôm qua?",
822
+ "query": """SELECT
823
+ A.Employee AS Wallet,
824
+ E.FullName,
825
+ DATETIME(A.Time) AS CheckInDayTime,
826
+ W.LatLon AS WorkPlaceLocation
827
+ FROM
828
+ Attendance A
829
+ JOIN
830
+ Employee E ON A.Employee = E.Wallet
831
+ JOIN
832
+ WorkPlaceAttendance W ON A.WorkPlaceAttendance = W.WorkPlaceId
833
+ WHERE
834
+ A.Type = 'CHECK_IN'
835
+ AND A.YYYYMMDD = strftime('%Y%m%d', date('now', '-1 day')) -- Lọc ngày hôm qua theo định dạng YYYYMMDD
836
+ ORDER BY
837
+ A.Time;
838
+ """
839
+ },
840
+ {
841
+ "input": "Có nhân viên nào check-in sau 7h15 hôm qua không?",
842
+ "query": """SELECT E.FullName, A.Employee, A.Time
843
+ FROM Attendance A
844
+ JOIN Employee E ON A.Employee = E.Wallet
845
+ WHERE A.Type = 'CHECK_IN'
846
+ AND A.Time > DATETIME('now', '-1 day', 'start of day', '+7 hours', '+15 minutes')
847
+ AND A.Time < DATETIME('now', '-1 day', 'start of day', '+1 day');
848
+
849
+ """
850
+ },
851
+ {
852
+ "input": "Tôi cần danh sách nhân viên check-in trước 8 giờ sáng hôm nay.",
853
+ "query": """SELECT E.FullName, A.Time AS CheckInTime
854
+ FROM Attendance A
855
+ JOIN Employee E ON A.Employee = E.Wallet
856
+ WHERE A.Type = 'CHECK_IN'
857
+ AND DATE(A.Time) = DATE('now') -- Ngày hôm nay
858
+ AND TIME(A.Time) < '08:00:00'; -- Trước 8 giờ sáng
859
+
860
+ """
861
+ },
862
+ {
863
+ "input": "Nhân viên Bùi Tiến Phát đã check-out lúc mấy giờ hôm nay?",
864
+ "query": """SELECT A.Time
865
+ FROM Attendance A
866
+ JOIN Employee E ON A.Employee = E.Wallet
867
+ WHERE E.FullName = 'Bùi Tiến Phát'
868
+ AND A.Type = 'CHECK_OUT'
869
+ AND A.YYYYMMDD = strftime('%Y%m%d', 'now'); -- Lọc theo ngày hôm nay (định dạng YYYYMMDD)
870
+
871
+ """
872
+ },
873
+ {
874
+ "input": "Có nhân viên nào chưa check-out hôm nay không?",
875
+ "query": """WITH CheckInsToday AS (
876
+ SELECT
877
+ Employee,
878
+ MAX(Time) AS LastCheckInTime
879
+ FROM Attendance
880
+ WHERE Type = 'CHECK_IN'
881
+ AND YYYYMMDD = STRFTIME('%Y%m%d', DATE('now')) -- Lọc những lần check-in hôm nay
882
+ GROUP BY Employee
883
+ ),
884
+ CheckOutsToday AS (
885
+ SELECT
886
+ Employee,
887
+ MAX(Time) AS LastCheckOutTime
888
+ FROM Attendance
889
+ WHERE Type = 'CHECK_OUT'
890
+ AND YYYYMMDD = STRFTIME('%Y%m%d', DATE('now')) -- Lọc những lần check-out hôm nay
891
+ GROUP BY Employee
892
+ )
893
+ SELECT
894
+ ci.Employee
895
+ FROM CheckInsToday ci
896
+ LEFT JOIN CheckOutsToday co
897
+ ON ci.Employee = co.Employee
898
+ WHERE co.LastCheckOutTime IS NULL OR ci.LastCheckInTime > co.LastCheckOutTime; -- Kiểm tra nếu không có check-out hoặc check-in sau check-out
899
+ """
900
+ },
901
+ {
902
+ "input": "Tôi muốn xem thời gian check-out trung bình của nhân viên trong tháng qua.",
903
+ "query": """WITH LastMonthCheckOuts AS (
904
+ SELECT
905
+ Employee,
906
+ CheckOutTime
907
+ FROM
908
+ ShiftManagement
909
+ WHERE
910
+ ShiftStatus = 'PRESENT'
911
+ AND strftime('%Y-%m', CheckOutTime) = strftime('%Y-%m', 'now', '-1 month')
912
+ )
913
+ SELECT
914
+ AVG(julianday(CheckOutTime) - julianday(DATE(CheckOutTime))) * 24 AS AverageCheckOutTime
915
+ FROM
916
+ LastMonthCheckOuts;
917
+ """
918
+ },
919
+ {
920
+ "input": "Nhân viên nào đã check-out sau 8h tối hôm nay?",
921
+ "query": """SELECT e.FullName, a.Employee, a.Time AS CheckOutTime
922
+ FROM Attendance a
923
+ JOIN Employee e ON a.Employee = e.Wallet
924
+ WHERE a.Type = 'CHECK_OUT'
925
+ AND DATE(a.Time) = DATE('now') -- Lọc theo ngày hiện tại
926
+ AND TIME(a.Time) > '20:00:00'; -- Lọc theo thời gian check-out sau 8 giờ tối
927
+ """
928
+ },
929
+ {
930
+ "input": "Nhân viên Employee 3 đã check-out trước 5h chiều vào những ngày nào?",
931
+ "query": """SELECT
932
+ YYYYMMDD,
933
+ CheckOutTime
934
+ FROM
935
+ ShiftManagement
936
+ WHERE
937
+ Employee = 'Employee 3'
938
+ AND strftime('%H:%M', CheckOutTime) < '17:00';
939
+
940
+ """
941
+ },
942
+ {
943
+ "input": "Tôi cần xem danh sách nhân viên đã check-out sau 6 giờ chiều hôm nay.",
944
+ "query": """SELECT e.FullName, e.Wallet, a.Time AS CheckOutTime
945
+ FROM Employee e
946
+ JOIN Attendance a ON e.Wallet = a.Employee
947
+ WHERE a.Type = 'CHECK_OUT'
948
+ AND DATE(a.Time) = DATE('now') -- Lọc những điểm danh của ngày hôm nay
949
+ AND TIME(a.Time) > '18:00:00'; -- Chỉ lấy những lần check-out sau 6 giờ chiều
950
+
951
+ """
952
+ },
953
+ {
954
+ "input": "Cảm xúc của nhân viên 'X' khi check-in hôm nay là gì?",
955
+ "query": """WITH LastCheckIn AS (
956
+ SELECT a.AttendanceId, a.Employee, MAX(a.Time) AS LastCheckInTime
957
+ FROM Attendance a
958
+ JOIN Employee e ON a.Employee = e.Wallet
959
+ WHERE e.FullName = 'X'
960
+ AND a.Type = 'CHECK_IN'
961
+ AND DATE(a.Time) = DATE('now') -- Lọc theo ngày hôm nay
962
+ GROUP BY a.Employee
963
+ )
964
+ SELECT e.FullName, e.Wallet, e.LocationId, e.DepartmentId, e.PositionId, e.BranchId,
965
+ e.PositionSalary, e.OnboardDateTime, ed.Gender, ed.Birthday, ed.PhoneNumber,
966
+ ed.Email, ed.StatusOfWorkId, ed.TypeOfWorkId, ed.TypeOfContractId, ed.TaxableSalary,
967
+ ed.PersonalIncomeTax, ed.PermanentAddress, ed.NumberOfDependents, ed.AcademicLevelId,
968
+ ed.ID, ed.TaxId, ed.HealthInsuranceId, ed.SocialInsuranceId, ed.HasResume, ed.HasBirthCertificate,
969
+ ed.HasCitizenIdentification, ed.HasHouseRegistrationBook, ed.HasHealthCertification,
970
+ ed.HasGraduationDegree, sa.Emotion, sa.Behavior, sa.ClothingStyle, sa.Appearance
971
+ FROM LastCheckIn lc
972
+ JOIN Employee e ON lc.Employee = e.Wallet
973
+ JOIN EmployeeDetail ed ON e.Wallet = ed.Wallet
974
+ JOIN Attendance a ON a.AttendanceId = lc.AttendanceId
975
+ JOIN StaffAtCheckInOut sa ON sa.CheckInOutId = a.AttendanceId
976
+ WHERE lc.LastCheckInTime = (
977
+ SELECT MAX(CheckTime)
978
+ FROM CheckInOut ci
979
+ WHERE ci.CheckTime <= lc.LastCheckInTime
980
+ );
981
+ """
982
+ },
983
+ {
984
+ "input": "Tình trạng cảm xúc phổ biến của nhân viên trong tuần này là gì?",
985
+ "query": """WITH ThisWeek AS (
986
+ SELECT s.Emotion
987
+ FROM StaffAtCheckInOut s
988
+ JOIN CheckInOut c ON s.CheckInOutId = c.CheckInOutId
989
+ WHERE strftime('%Y-%W', c.CheckTime) = strftime('%Y-%W', 'now') -- Lọc theo tuần hiện tại
990
+ )
991
+ SELECT Emotion, COUNT(*) as Count
992
+ FROM ThisWeek
993
+ GROUP BY Emotion
994
+ ORDER BY Count DESC;
995
+ );
996
+ """
997
+ },
998
+ {
999
+ "input": "Có bao nhiêu nhân viên cảm thấy căng thẳng sau giờ làm hôm nay?",
1000
+ "query": """WITH EmployeeCheckOut AS (
1001
+ SELECT A.Employee, A.Time, A.YYYYMMDD, S.Emotion
1002
+ FROM Attendance A
1003
+ JOIN StaffAtCheckInOut S ON A.Employee = S.StaffId
1004
+ WHERE A.Type = 'CHECK_OUT'
1005
+ AND S.Emotion IN ('Angry', 'Fear', 'Sad', 'Disgust')
1006
+ AND A.YYYYMMDD = strftime('%Y%m%d', 'now') -- Kiểm tra ngày hôm nay
1007
+ )
1008
+ SELECT COUNT(DISTINCT Employee) AS StressedEmployees
1009
+ FROM EmployeeCheckOut;
1010
+ );
1011
+ """
1012
+ },
1013
+ {
1014
+ "input": "Nhân viên Employee 3 có thay đổi cảm xúc như thế nào trong ca làm việc hôm nay?",
1015
+ "query": """WITH EmployeeWallet AS (
1016
+ SELECT Wallet
1017
+ FROM Employee
1018
+ WHERE FullName = 'Employee 3'
1019
+ ),
1020
+ TodayShift AS (
1021
+ SELECT ShiftId
1022
+ FROM ShiftManagement
1023
+ WHERE Employee IN (SELECT Wallet FROM EmployeeWallet)
1024
+ AND DATE(CheckInTime) = DATE('now') -- Lấy các ca làm việc trong ngày hôm nay
1025
+ ),
1026
+ TodayCheckInOut AS (
1027
+ SELECT CheckInOutId
1028
+ FROM CheckInOut
1029
+ WHERE CheckTime BETWEEN (SELECT MIN(CheckInTime) FROM ShiftManagement WHERE ShiftId IN (SELECT ShiftId FROM TodayShift))
1030
+ AND (SELECT MAX(CheckOutTime) FROM ShiftManagement WHERE ShiftId IN (SELECT ShiftId FROM TodayShift))
1031
+ )
1032
+ SELECT Emotion
1033
+ FROM StaffAtCheckInOut
1034
+ WHERE StaffId IN (SELECT Wallet FROM EmployeeWallet)
1035
+ AND CheckInOutId IN (SELECT CheckInOutId FROM TodayCheckInOut);
1036
+
1037
+ );
1038
+ """
1039
+ },
1040
+ {
1041
+ "input": "Tôi cần xem thống kê cảm xúc của nhân viên trong tháng qua.",
1042
+ "query": """SELECT
1043
+ Emotion,
1044
+ COUNT(*) AS EmotionCount
1045
+ FROM
1046
+ StaffAtCheckInOut
1047
+ JOIN
1048
+ CheckInOut ON StaffAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId
1049
+ WHERE
1050
+ CheckTime BETWEEN DATE('now', 'start of month') AND DATE('now', 'localtime')
1051
+ GROUP BY
1052
+ Emotion;
1053
+ """
1054
+ },
1055
+ {
1056
+ "input": "Nhân viên Employee 3 có thay đổi cảm xúc như thế nào trong ca làm việc hôm nay?",
1057
+ "query": """WITH EmployeeWallet AS (
1058
+ SELECT Wallet
1059
+ FROM Employee
1060
+ WHERE FullName = 'Employee 3'
1061
+ ),
1062
+ TodayShift AS (
1063
+ SELECT ShiftId
1064
+ FROM ShiftManagement
1065
+ WHERE Employee IN (SELECT Wallet FROM EmployeeWallet)
1066
+ AND DATE(CheckInTime) = DATE('now') -- Lấy các ca làm việc trong ngày hôm nay
1067
+ ),
1068
+ TodayCheckInOut AS (
1069
+ SELECT CheckInOutId
1070
+ FROM CheckInOut
1071
+ WHERE CheckTime BETWEEN (SELECT MIN(CheckInTime) FROM ShiftManagement WHERE ShiftId IN (SELECT ShiftId FROM TodayShift))
1072
+ AND (SELECT MAX(CheckOutTime) FROM ShiftManagement WHERE ShiftId IN (SELECT ShiftId FROM TodayShift))
1073
+ )
1074
+ SELECT Emotion
1075
+ FROM StaffAtCheckInOut
1076
+ WHERE StaffId IN (SELECT Wallet FROM EmployeeWallet)
1077
+ AND CheckInOutId IN (SELECT CheckInOutId FROM TodayCheckInOut);
1078
+
1079
+ );
1080
+ """
1081
+ },
1082
+ {
1083
+ "input": "Tôi cần xem thống kê cảm xúc của nhân viên trong tháng qua.",
1084
+ "query": """SELECT
1085
+ Emotion,
1086
+ COUNT(*) AS EmotionCount
1087
+ FROM
1088
+ StaffAtCheckInOut
1089
+ JOIN
1090
+ CheckInOut ON StaffAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId
1091
+ WHERE
1092
+ CheckTime BETWEEN DATE('now', 'start of month') AND DATE('now', 'localtime')
1093
+ GROUP BY
1094
+ Emotion;
1095
+ """
1096
+ },
1097
+ {
1098
+ "input": "Có nhân viên nào check-in với trạng thái cảm xúc tiêu cực trong tuần này không?",
1099
+ "query": """WITH CurrentWeek AS (
1100
+ SELECT
1101
+ DATE('now', 'weekday 0', '-7 days') AS WeekStart, -- Bắt đầu của tuần hiện tại (Chủ nhật trước)
1102
+ DATE('now', 'weekday 0', '-1 days') AS WeekEnd -- Kết thúc của tuần hiện tại (Thứ bảy trước)
1103
+ )
1104
+ SELECT
1105
+ e.FullName,
1106
+ sa.Emotion,
1107
+ sa.CheckInOutId,
1108
+ c.CheckTime
1109
+ FROM
1110
+ StaffAtCheckInOut sa
1111
+ JOIN
1112
+ CheckInOut c ON sa.CheckInOutId = c.CheckInOutId
1113
+ JOIN
1114
+ Employee e ON sa.StaffId = e.Wallet
1115
+ WHERE
1116
+ sa.Emotion IN ('Angry', 'Sad', 'Fear', 'Disgust') -- Cảm xúc tiêu cực
1117
+ AND DATE(c.CheckTime) BETWEEN (SELECT WeekStart FROM CurrentWeek) AND (SELECT WeekEnd FROM CurrentWeek) -- Trong tuần hiện tại
1118
+ AND c.CheckTime = (
1119
+ SELECT MIN(c2.CheckTime)
1120
+ FROM CheckInOut c2
1121
+ WHERE c2.CheckInOutId = c.CheckInOutId
1122
+ ); -- Chỉ lấy lần CHECK_IN đầu tiên
1123
+ """
1124
+ },
1125
+ {
1126
+ "input": "Nhân viên X có hành vi bất thường trong suốt ca làm việc hôm nay không?",
1127
+ "query": """WITH EmployeeCheck AS (
1128
+ SELECT E.Wallet, E.FullName, S.IsLate, S.IsLatePermission, S.IsComebackSoon, S.IsComebackSoonPermission,
1129
+ A.Type AS AttendanceType, A.Time AS AttendanceTime, A.IsOvertime, A.OvertimeStatus, SA.Emotion, SA.Behavior
1130
+ FROM Employee E
1131
+ JOIN ShiftStatus S ON E.Wallet = S.Employee
1132
+ JOIN Attendance A ON E.Wallet = A.Employee AND A.YYYYMMDD = strftime('%Y%m%d', 'now')
1133
+ LEFT JOIN StaffAtCheckInOut SA ON E.Wallet = SA.StaffId
1134
+ WHERE E.FullName = 'Employee 3' AND S.YYYYMMDD = strftime('%Y%m%d', 'now')
1135
+ )
1136
+ SELECT *
1137
+ FROM EmployeeCheck
1138
+ WHERE
1139
+ -- Kiểm tra nếu đi trễ không phép
1140
+ (IsLate = 1 AND IsLatePermission = 0)
1141
+ OR
1142
+ -- Kiểm tra nếu về sớm không phép
1143
+ (IsComebackSoon = 1 AND IsComebackSoonPermission = 0)
1144
+ OR
1145
+ -- Kiểm tra nếu có cảm xúc tiêu cực từ camera
1146
+ Emotion IN ('Angry', 'Sad', 'Disgust', 'Fear')
1147
+ OR
1148
+ -- Kiểm tra nếu có hành vi bất thường từ camera
1149
+ Behavior IN ('Taking photo', 'Talking/Pointing');
1150
+ """
1151
+ },
1152
+ {
1153
+ "input": "Tôi muốn xem danh sách nhân viên đi trễ trong tuần.",
1154
+ "query": """WITH CurrentWeek AS (
1155
+ SELECT
1156
+ STRFTIME('%Y%m%d', DATE('now', 'weekday 0', '-6 days')) AS WeekStart, -- Ngày bắt đầu tuần (thứ 2)
1157
+ STRFTIME('%Y%m%d', DATE('now', 'weekday 0')) AS WeekEnd -- Ngày kết thúc tuần (Chủ nhật)
1158
+ )
1159
+ SELECT
1160
+ E.FullName,
1161
+ E.Wallet,
1162
+ S.YYYYMMDD,
1163
+ S.IsLate,
1164
+ S.IsLatePermission
1165
+ FROM
1166
+ ShiftStatus S
1167
+ JOIN
1168
+ Employee E ON S.Employee = E.Wallet
1169
+ JOIN
1170
+ CurrentWeek CW ON S.YYYYMMDD BETWEEN CW.WeekStart AND CW.WeekEnd
1171
+ WHERE
1172
+ S.IsLate = TRUE AND S.IsLatePermission = FALSE; -- Chỉ lấy nhân viên đi trễ mà không có phép
1173
+ """
1174
+ },
1175
+ {
1176
+ "input": "Có nhân viên nào bỏ vị trí làm việc mà không check-out hôm nay không?",
1177
+ "query": """WITH CheckInToday AS (
1178
+ SELECT
1179
+ Employee,
1180
+ ShiftId,
1181
+ WorkPlaceAttendance,
1182
+ Time AS CheckInTime
1183
+ FROM Attendance
1184
+ WHERE
1185
+ Type = 'CHECK_IN'
1186
+ AND YYYYMMDD = strftime('%Y%m%d', 'now')
1187
+ ),
1188
+ CheckOutToday AS (
1189
+ SELECT
1190
+ Employee,
1191
+ ShiftId,
1192
+ WorkPlaceAttendance,
1193
+ Time AS CheckOutTime
1194
+ FROM Attendance
1195
+ WHERE
1196
+ Type = 'CHECK_OUT'
1197
+ AND YYYYMMDD = strftime('%Y%m%d', 'now')
1198
+ )
1199
+ SELECT
1200
+ e.FullName,
1201
+ e.Wallet,
1202
+ c1.CheckInTime,
1203
+ s.ShiftStatus
1204
+ FROM
1205
+ CheckInToday c1
1206
+ LEFT JOIN CheckOutToday c2 ON c1.Employee = c2.Employee AND c1.ShiftId = c2.ShiftId
1207
+ JOIN Employee e ON c1.Employee = e.Wallet
1208
+ JOIN ShiftManagement s ON c1.Employee = s.Employee AND c1.ShiftId = s.ShiftId
1209
+ WHERE
1210
+ c2.CheckOutTime IS NULL
1211
+ AND s.ShiftStatus = 'PRESENT';
1212
+ """
1213
+ },
1214
+ {
1215
+ "input": "Nhân viên tên 'Employee3' đã có hành vi như thế nào khi check-out hôm nay?",
1216
+ "query": """WITH TodayAttendance AS (
1217
+ -- Lấy thông tin check-out của Employee3 hôm nay
1218
+ SELECT A.Employee, A.Type, A.Time, A.WorkPlaceAttendance, S.Behavior, S.Emotion
1219
+ FROM Attendance A
1220
+ JOIN Employee E ON A.Employee = E.Wallet
1221
+ JOIN StaffAtCheckInOut S ON A.AttendanceId = S.CheckInOutId
1222
+ WHERE E.FullName = 'Employee3'
1223
+ AND A.Type = 'CHECK_OUT'
1224
+ AND DATE(A.Time) = DATE('now') -- Chỉ lấy dữ liệu của ngày hôm nay
1225
+ )
1226
+ SELECT *
1227
+ FROM TodayAttendance;
1228
+ """
1229
+ },
1230
+ {
1231
+ "input": "Nhân viên tên 'Employee3' đã có hành vi như thế nào khi check-out hôm nay?",
1232
+ "query": """WITH TodayAttendance AS (
1233
+ -- Lấy thông tin check-out của Employee3 hôm nay
1234
+ SELECT A.Employee, A.Type, A.Time, A.WorkPlaceAttendance, S.Behavior, S.Emotion
1235
+ FROM Attendance A
1236
+ JOIN Employee E ON A.Employee = E.Wallet
1237
+ JOIN StaffAtCheckInOut S ON A.AttendanceId = S.CheckInOutId
1238
+ WHERE E.FullName = 'Employee3'
1239
+ AND A.Type = 'CHECK_OUT'
1240
+ AND DATE(A.Time) = DATE('now') -- Chỉ lấy dữ liệu của ngày hôm nay
1241
+ )
1242
+ SELECT *
1243
+ FROM TodayAttendance;
1244
+ """
1245
+ },
1246
+ {
1247
+ "input": "Tôi muốn xem báo cáo về check-in/check-out và cảm xúc của nhân viên tên 'Employee 5' trong tháng này.",
1248
+ "query": """SELECT
1249
+ A.Time AS CheckTime,
1250
+ A.Type AS CheckType,
1251
+ A.YYYYMMDD
1252
+ FROM
1253
+ Attendance A
1254
+ JOIN
1255
+ Employee E ON A.Employee = E.Wallet
1256
+ WHERE
1257
+ E.FullName = 'Employee 5'
1258
+ AND strftime('%Y-%m', A.Time) = strftime('%Y-%m', 'now') -- Lọc dữ liệu trong tháng hiện tại
1259
+ ORDER BY
1260
+ A.Time ASC;
1261
+ """
1262
+ },
1263
+ {
1264
+ "input": "Có bao nhiêu nhân viên check-in muộn và có cảm xúc tiêu cực trong hôm nay?",
1265
+ "query": """WITH LateCheckIn AS (
1266
+ SELECT
1267
+ s.Employee,
1268
+ s.IsLate
1269
+ FROM
1270
+ ShiftStatus s
1271
+ WHERE
1272
+ s.IsLate = TRUE
1273
+ AND s.YYYYMMDD = strftime('%Y%m%d', 'now') -- Chỉ lấy dữ liệu ngày hôm nay
1274
+ ),
1275
+ NegativeEmotion AS (
1276
+ SELECT
1277
+ sc.StaffId
1278
+ FROM
1279
+ StaffAtCheckInOut sc
1280
+ WHERE
1281
+ sc.Emotion IN ('Angry', 'Sad', 'Disgust', 'Fear') -- Chọn các cảm xúc tiêu cực
1282
+ AND EXISTS (
1283
+ SELECT 1
1284
+ FROM CheckInOut c
1285
+ WHERE c.CheckInOutId = sc.CheckInOutId
1286
+ AND strftime('%Y%m%d', c.CheckTime) = strftime('%Y%m%d', 'now') -- Chỉ lấy dữ liệu của hôm nay
1287
+ )
1288
+ )
1289
+ SELECT
1290
+ COUNT(DISTINCT l.Employee) AS NumLateAndNegativeEmotion
1291
+ FROM
1292
+ LateCheckIn l
1293
+ JOIN
1294
+ NegativeEmotion ne ON l.Employee = ne.StaffId;
1295
+ """
1296
+ },
1297
+ {
1298
+ "input": "Tôi cần báo cáo về hành vi và thời gian check-in của nhân viên tên 'Employee 9' trong tháng qua.",
1299
+ "query": """WITH LastMonth AS (
1300
+ SELECT strftime('%Y-%m', 'now', '-1 month') AS LastMonth
1301
+ )
1302
+ SELECT DISTINCT
1303
+ E.FullName AS EmployeeName,
1304
+ E.Wallet AS EmployeeWallet,
1305
+ A.Type AS CheckType,
1306
+ A.Time AS CheckTime,
1307
+ A.IsOvertime,
1308
+ A.OvertimeStatus,
1309
+ A.Reason AS CheckReason,
1310
+ A.OnBehalfStatus,
1311
+ SM.ShiftStatus,
1312
+ SM.LatePermissionStatus,
1313
+ SM.ComeBackSoonPermissionStatus,
1314
+ SM.LeavePermissionStatus
1315
+ FROM Attendance A
1316
+ JOIN Employee E ON A.Employee = E.Wallet
1317
+ LEFT JOIN ShiftManagement SM ON A.ShiftId = SM.ShiftId AND A.Employee = SM.Employee
1318
+ JOIN LastMonth L ON strftime('%Y-%m', A.Time) = L.LastMonth
1319
+ WHERE A.Type IN ('CHECK_IN', 'CHECK_IN_ON_BEHALF') and E.FullName = 'Employee 9'
1320
+ ORDER BY A.Time ASC;
1321
+ """
1322
+ },
1323
+ {
1324
+ "input": "Nhân viên 'Employee 9' có hành vi bất thường và cảm xúc tiêu cực vào ngày hôm qua không?",
1325
+ "query": """WITH EmployeeData AS (
1326
+ SELECT e.Wallet
1327
+ FROM Employee e
1328
+ WHERE e.FullName = 'Employee 9'
1329
+ ),
1330
+ YesterdayData AS (
1331
+ SELECT
1332
+ s.StaffId,
1333
+ s.Emotion,
1334
+ s.Behavior,
1335
+ c.CheckTime
1336
+ FROM StaffAtCheckInOut s
1337
+ JOIN CheckInOut c ON s.CheckInOutId = c.CheckInOutId
1338
+ WHERE s.StaffId = (SELECT Wallet FROM EmployeeData)
1339
+ AND DATE(c.CheckTime) = DATE('now', '-1 day') -- Ngày hôm qua
1340
+ )
1341
+ SELECT
1342
+ Emotion,
1343
+ Behavior,
1344
+ CheckTime,
1345
+ CASE
1346
+ WHEN Emotion IN ('Angry', 'Fear', 'Sad', 'Disgust') THEN 'Negative Emotion'
1347
+ ELSE 'Normal Emotion'
1348
+ END AS EmotionStatus,
1349
+ CASE
1350
+ WHEN Behavior IN ('Taking photo', 'Talking/Pointing') THEN 'Unusual Behavior'
1351
+ ELSE 'Normal Behavior'
1352
+ END AS BehaviorStatus
1353
+ FROM YesterdayData
1354
+ WHERE Emotion IN ('Angry', 'Fear', 'Sad', 'Disgust')
1355
+ OR Behavior IN ('Taking photo', 'Talking/Pointing');
1356
+ """
1357
+ },
1358
+ {
1359
+ "input": "Báo cáo tổng hợp về check-out và hành vi vi phạm của nhân viên trong tuần này.",
1360
+ "query": """WITH ThisWeekAttendance AS (
1361
+ -- Lấy tất cả dữ liệu điểm danh của tuần này
1362
+ SELECT
1363
+ A.Employee,
1364
+ A.Type,
1365
+ A.Time,
1366
+ A.WorkPlaceAttendance,
1367
+ A.IsOvertime,
1368
+ A.OvertimeStatus,
1369
+ A.ShiftId,
1370
+ A.OnBehalfStatus
1371
+ FROM Attendance A
1372
+ WHERE strftime('%W', A.Time) = strftime('%W', 'now') -- Lọc theo tuần hiện tại
1373
+ ),
1374
+
1375
+ ThisWeekShiftStatus AS (
1376
+ -- Lấy dữ liệu trạng thái làm việc của tuần này
1377
+ SELECT
1378
+ S.Employee,
1379
+ S.YYYYMMDD,
1380
+ S.IsDayOff,
1381
+ S.IsPresent,
1382
+ S.IsLate,
1383
+ S.IsLatePermission,
1384
+ S.IsComebackSoon,
1385
+ S.IsComebackSoonPermission,
1386
+ S.IsLeavePermission,
1387
+ S.IsPaidLeave
1388
+ FROM ShiftStatus S
1389
+ WHERE strftime('%W', date(substr(S.YYYYMMDD, 1, 4) || '-' ||
1390
+ substr(S.YYYYMMDD, 5, 2) || '-' ||
1391
+ substr(S.YYYYMMDD, 7, 2))) = strftime('%W', 'now') -- Lọc theo tuần hiện tại
1392
+ )
1393
+
1394
+ -- Tổng hợp thông tin điểm danh và hành vi vi phạm trong tuần này
1395
+ SELECT
1396
+ E.FullName AS EmployeeName,
1397
+ E.DepartmentId,
1398
+ E.PositionId,
1399
+ COALESCE(SUM(CASE WHEN TW.Type = 'CHECK_OUT' THEN 1 ELSE 0 END), 0) AS CheckOutCount,
1400
+ COALESCE(SUM(CASE WHEN TWS.IsLate = 1 AND TWS.IsLatePermission = 0 THEN 1 ELSE 0 END), 0) AS LateWithoutPermissionCount,
1401
+ COALESCE(SUM(CASE WHEN TWS.IsComebackSoon = 1 AND TWS.IsComebackSoonPermission = 0 THEN 1 ELSE 0 END), 0) AS EarlyLeaveWithoutPermissionCount,
1402
+ COALESCE(SUM(CASE WHEN TWS.IsPresent = 0 AND TWS.IsDayOff = 0 THEN 1 ELSE 0 END), 0) AS AbsentWithoutReasonCount
1403
+ FROM Employee E
1404
+ LEFT JOIN ThisWeekAttendance TW ON E.Wallet = TW.Employee
1405
+ LEFT JOIN ThisWeekShiftStatus TWS ON E.Wallet = TWS.Employee
1406
+ GROUP BY E.FullName, E.DepartmentId, E.PositionId
1407
+ ORDER BY E.FullName;
1408
+
1409
+ """
1410
+ },
1411
+ {
1412
+ "input": "Cửa hàng hiện đang trong tình trạng gì: sạch sẽ, bẩn hay có vấn đề gì nghiêm trọng không?",
1413
+ "query": """SELECT
1414
+ StoreId,
1415
+ CleanlinessStatus,
1416
+ CASE
1417
+ WHEN CleanlinessStatus = 'Clean' THEN 'Sạch sẽ'
1418
+ WHEN CleanlinessStatus = 'Dirty' THEN 'Bẩn'
1419
+ WHEN CleanlinessStatus = 'On fire' THEN 'Cửa hàng đang cháy'
1420
+ WHEN CleanlinessStatus = 'Under attack' THEN 'Cửa hàng đang bị tấn công'
1421
+ ELSE 'Tình trạng không rõ'
1422
+ END AS StoreCondition,
1423
+ LastUpdate
1424
+ FROM StoreStatus
1425
+ ORDER BY LastUpdate DESC;
1426
+ """
1427
+ },
1428
+ {
1429
+ "input": "Có cảnh báo nào về độ sạch của quán không?",
1430
+ "query": """SELECT StoreId, CleanlinessStatus, LastUpdate
1431
+ FROM StoreStatus
1432
+ WHERE CleanlinessStatus IN ('Dirty', 'On fire', 'Under attack');
1433
+ """
1434
+ },
1435
+ {
1436
+ "input": "Tình trạng vệ sinh chung của cửa hàng hôm nay như thế nào?",
1437
+ "query": """SELECT StoreId, CleanlinessStatus, LastUpdate
1438
+ FROM StoreStatus
1439
+ WHERE DATE(LastUpdate) = DATE('now');
1440
+ """
1441
+ },
1442
+ ]