|
examples = [ |
|
{"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?", |
|
"query": """SELECT StoreId |
|
FROM StoreStatus |
|
WHERE Status = 'Open' |
|
AND CleanlinessStatus = 'Clean' |
|
AND OpeningTime <= '2024-10-10 09:00:00'"""}, |
|
{"input": "Có bao nhiêu ca làm việc đã được ghi nhận trong tháng 10 năm 2024?", |
|
"query": """SELECT COUNT(*) AS TotalShifts |
|
FROM ShiftManagement |
|
WHERE YYYYMMDD LIKE '202410%';"""}, |
|
{"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 đó?", |
|
"query": """SELECT e.FullName, |
|
strftime('%Y', 'now') - substr(ed.Birthday, 1, 4) AS Age, |
|
ed.Wallet |
|
FROM EmployeeDetail ed join Employee e on ed.Wallet = e.Wallet |
|
ORDER BY Age DESC |
|
LIMIT 1;"""}, |
|
{"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?", |
|
"query": """SELECT COUNT(DISTINCT Employee) AS NumberOfEmployees |
|
FROM ShiftStatus |
|
WHERE IsLeavePermission = 1 |
|
AND IsPaidLeave = 1 |
|
AND CAST(substr(YYYYMMDD, 1, 6) AS INTEGER) = CAST(strftime('%Y%m', 'now', '-1 month') AS INTEGER);"""}, |
|
{"input": "Những nhân viên nào rời văn phòng sớm nhiều nhất?", |
|
"query": """SELECT |
|
E.FullName, |
|
COUNT(SS.IsComebackSoon) AS EarlyLeaveCount |
|
FROM |
|
ShiftStatus SS |
|
JOIN |
|
Employee E ON SS.Employee = E.Wallet |
|
WHERE |
|
SS.IsComebackSoon = 1 |
|
GROUP BY |
|
E.FullName |
|
ORDER BY |
|
EarlyLeaveCount DESC"""}, |
|
{"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 |
|
FROM ShiftManagement |
|
WHERE CAST(YYYYMMDD AS INTEGER) = CAST(STRFTIME('%Y%m%d', 'now') AS INTEGER) |
|
AND ShiftStatus = 'PRESENT'; |
|
"""}, |
|
{"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 |
|
FROM ShiftManagement sm |
|
JOIN Employee e ON sm.Employee = e.Wallet |
|
WHERE CAST(substr(sm.YYYYMMDD, 1, 8) AS INTEGER) = CAST(strftime('%Y%m%d', 'now') AS INTEGER) |
|
AND sm.ShiftStatus = 'PRESENT'; |
|
; |
|
"""}, |
|
{ |
|
"input": "Những nhân viên nào có phê duyệt đi trễ trong 7 ngày qua?", |
|
"query": """SELECT Employee, LatePermissionStatus, LatePermissionApproval |
|
FROM ShiftManagement |
|
WHERE LatePermissionStatus = 'PERMISSION' |
|
AND CAST(YYYYMMDD AS INTEGER) >= CAST(STRFTIME('%Y%m%d', DATE('now', '-7 days')) AS INTEGER); |
|
""", |
|
}, |
|
{ |
|
"input": "Lấy tất cả nhân viên đã có check-in và check-out trong ngày hôm nay?", |
|
"query": """SELECT Employee, CheckInTime, CheckOutTime |
|
FROM ShiftManagement |
|
WHERE CAST(YYYYMMDD AS INTEGER) = CAST(strftime('%Y%m%d', 'now') AS INTEGER) |
|
AND CheckInTime IS NOT NULL |
|
AND CheckOutTime IS NOT NULL; |
|
""", |
|
}, |
|
{ |
|
"input": "Lấy danh sách nhân viên đã có nghỉ phép có lương trong tháng này?", |
|
"query": """SELECT Employee, IsPaidLeave |
|
FROM ShiftStatus |
|
WHERE IsPaidLeave = 1 |
|
AND YYYYMMDD BETWEEN STRFTIME('%Y%m%d', DATE('now', 'start of month')) |
|
AND STRFTIME('%Y%m%d', DATE('now', 'start of month', '+1 month', '-1 day')); |
|
""" |
|
}, |
|
{ |
|
"input": "Hiện tại có bao nhiêu nhân viên nam và nữ?", |
|
"query": """SELECT Gender, COUNT(*) AS NumberOfEmployees |
|
FROM EmployeeDetail |
|
GROUP BY Gender; |
|
|
|
""" |
|
}, |
|
{ |
|
"input": "Số điện thoại của nhân viên tên Employee 2?", |
|
"query": """SELECT ed.PhoneNumber |
|
FROM Employee e |
|
JOIN EmployeeDetail ed ON e.Wallet = ed.Wallet |
|
WHERE e.FullName = 'Employee 2'; |
|
""" |
|
}, |
|
{ |
|
"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 |
|
FROM ShiftManagement |
|
WHERE CAST(YYYYMMDD AS INTEGER) = CAST(STRFTIME('%Y%m%d', 'now') AS INTEGER) |
|
AND ShiftStatus = 'PRESENT'; |
|
""" |
|
}, |
|
{ |
|
"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 |
|
FROM ShiftManagement sm |
|
JOIN Employee e ON sm.Employee = e.Wallet |
|
WHERE sm.YYYYMMDD = STRFTIME('%Y%m%d', 'now') |
|
AND sm.ShiftStatus = 'PRESENT'; |
|
""" |
|
}, |
|
{ |
|
"input": "Lấy danh sách nhân viên đi trễ và có phép trong ngày hôm nay?", |
|
"query": """SELECT e.FullName, ss.IsLate, ss.IsLatePermission |
|
FROM ShiftStatus ss |
|
JOIN Employee e ON ss.Employee = e.Wallet |
|
WHERE ss.YYYYMMDD = STRFTIME('%Y%m%d', 'now') |
|
AND ss.IsLate = 1 |
|
AND ss.IsLatePermission = 1; |
|
""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """SELECT e.FullName, sm.ShiftStatus, sm.LatePermissionStatus |
|
FROM ShiftManagement sm |
|
JOIN Employee e ON sm.Employee = e.Wallet |
|
WHERE sm.YYYYMMDD BETWEEN STRFTIME('%Y%m%d', 'now', 'weekday 0', '-6 days') AND STRFTIME('%Y%m%d', 'now', 'weekday 0') |
|
AND sm.LatePermissionStatus = 'NO_PERMISSION';""" |
|
}, |
|
{ |
|
"input": "Lấy danh sách nhân viên đã điểm danh làm thêm giờ hôm nay?", |
|
"query": """SELECT e.FullName, a.Type, a.IsOvertime |
|
FROM Attendance a |
|
JOIN Employee e ON a.Employee = e.Wallet |
|
WHERE CAST(a.YYYYMMDD AS INTEGER) = CAST(STRFTIME('%Y%m%d', 'now') AS INTEGER) |
|
AND a.IsOvertime = 1; |
|
""" |
|
}, |
|
{ |
|
"input": "Lấy danh sách nhân viên đã nghỉ phép hôm nay?", |
|
"query": """SELECT e.FullName, ss.IsLeavePermission |
|
FROM ShiftStatus ss |
|
JOIN Employee e ON ss.Employee = e.Wallet |
|
WHERE ss.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND ss.IsLeavePermission = TRUE;""" |
|
}, |
|
{ |
|
"input": "Lấy danh sách nhân viên nghỉ phép có lương trong tuần này?", |
|
"query": """SELECT e.FullName, ss.IsPaidLeave |
|
FROM ShiftStatus ss |
|
JOIN Employee e ON ss.Employee = e.Wallet |
|
WHERE ss.YYYYMMDD BETWEEN STRFTIME('%Y%m%d', 'now', 'weekday 0', '-6 days') AND STRFTIME('%Y%m%d', 'now', 'weekday 0') |
|
AND ss.IsPaidLeave = TRUE;""" |
|
}, |
|
{ |
|
"input": "Lấy thông tin nhân viên check-in hộ người khác hôm nay?", |
|
"query": """SELECT e.FullName, a.Type |
|
FROM Attendance a |
|
JOIN Employee e ON a.Employee = e.Wallet |
|
WHERE a.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND a.Type = 'CHECK_IN_ON_BEHALF';""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """SELECT e.FullName, sm.ShiftId, sm.CheckInTime, sm.CheckOutTime, sm.ShiftStatus |
|
FROM ShiftManagement sm |
|
JOIN Employee e ON sm.Employee = e.Wallet |
|
WHERE sm.YYYYMMDD = STRFTIME('%Y%m%d', 'now');""" |
|
}, |
|
{ |
|
"input": "Lấy danh sách nhân viên đã check-in hôm nay nhưng chưa check-out?", |
|
"query": """SELECT e.FullName, sm.CheckInTime, sm.CheckOutTime |
|
FROM ShiftManagement sm |
|
JOIN Employee e ON sm.Employee = e.Wallet |
|
WHERE sm.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND sm.CheckInTime IS NOT NULL AND sm.CheckOutTime IS NULL;""" |
|
}, |
|
{ |
|
"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ờ?", |
|
"query": """SELECT e.FullName, a.IsOvertime, a.OvertimeStatus |
|
FROM Attendance a |
|
JOIN Employee e ON a.Employee = e.Wallet |
|
WHERE a.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND a.IsOvertime = TRUE;""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """SELECT e.FullName, a.WorkPlaceAttendance, w.LatLon |
|
FROM Attendance a |
|
JOIN Employee e ON a.Employee = e.Wallet |
|
JOIN WorkPlaceAttendance w ON a.WorkPlaceAttendance = w.WorkPlaceId |
|
WHERE a.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND a.Type IN ('CHECK_IN', 'CHECK_OUT');""" |
|
}, |
|
{ |
|
"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ể?", |
|
"query": """SELECT e.FullName, a.Time, w.LatLon |
|
FROM Attendance a |
|
JOIN Employee e ON a.Employee = e.Wallet |
|
JOIN WorkPlaceAttendance w ON a.WorkPlaceAttendance = w.WorkPlaceId |
|
WHERE w.LatLon = 'TOA_DO_CU_THE' AND a.Type = 'CHECK_IN';""" |
|
}, |
|
{ |
|
"input": "Lấy danh sách nhân viên có trạng thái làm thêm giờ chưa được đọc?", |
|
"query": """SELECT e.FullName, a.OvertimeStatus |
|
FROM Attendance a |
|
JOIN Employee e ON a.Employee = e.Wallet |
|
WHERE a.OvertimeStatus = 'UN_READ';""" |
|
}, |
|
{ |
|
"input": "Lấy thông tin nhân viên có đi sớm về sớm hôm nay?", |
|
"query": """SELECT e.FullName, sm.ComeBackSoonPermissionStatus |
|
FROM ShiftManagement sm |
|
JOIN Employee e ON sm.Employee = e.Wallet |
|
WHERE sm.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND sm.ComeBackSoonPermissionStatus = 'PERMISSION';""" |
|
}, |
|
{ |
|
"input": "Lấy danh sách nhân viên không đi làm trong tuần này?", |
|
"query": """SELECT e.FullName, ss.IsPresent |
|
FROM ShiftStatus ss |
|
JOIN Employee e ON ss.Employee = e.Wallet |
|
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;""" |
|
}, |
|
{ |
|
"input": "Lấy danh sách nhân viên đi trễ không phép và vắng mặt hôm nay?", |
|
"query": """SELECT e.FullName, ss.IsLate, ss.IsLatePermission, ss.IsPresent |
|
FROM ShiftStatus ss |
|
JOIN Employee e ON ss.Employee = e.Wallet |
|
WHERE ss.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND ss.IsLate = TRUE AND ss.IsLatePermission = FALSE AND ss.IsPresent = FALSE;""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """SELECT e.FullName, sm.LatePermissionApproval, sm.LatePermissionStatus |
|
FROM ShiftManagement sm |
|
JOIN Employee e ON sm.Employee = e.Wallet |
|
WHERE sm.YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND sm.LatePermissionStatus = 'PERMISSION';""" |
|
}, |
|
{ |
|
"input": "Lấy danh sách nhân viên có ngày sinh trong tháng này?", |
|
"query": """SELECT e.FullName, ed.Birthday |
|
FROM EmployeeDetail ed |
|
JOIN Employee e ON ed.Wallet = e.Wallet |
|
WHERE STRFTIME('%m', ed.Birthday, 'unixepoch') = STRFTIME('%m', 'now');""" |
|
}, |
|
{ |
|
"input": "Lấy thông tin số người phụ thuộc của nhân viên?", |
|
"query": """SELECT e.FullName, ed.NumberOfDependents |
|
FROM EmployeeDetail ed |
|
JOIN Employee e ON ed.Wallet = e.Wallet;""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """SELECT e.FullName, ed.TaxableSalary, ed.PersonalIncomeTax |
|
FROM EmployeeDetail ed |
|
JOIN Employee e ON ed.Wallet = e.Wallet |
|
WHERE ed.TaxableSalary > 0;""" |
|
}, |
|
{ |
|
"input": "Lấy danh sách nhân viên chưa có sơ yếu lý lịch?", |
|
"query": """SELECT e.FullName, ed.HasResume |
|
FROM EmployeeDetail ed |
|
JOIN Employee e ON ed.Wallet = e.Wallet |
|
WHERE ed.HasResume = FALSE;""" |
|
}, |
|
{ |
|
"input": "Lấy danh sách nhân viên có giấy khám sức khỏe?", |
|
"query": """SELECT e.FullName, ed.HasHealthCertification |
|
FROM EmployeeDetail ed |
|
JOIN Employee e ON ed.Wallet = e.Wallet |
|
WHERE ed.HasHealthCertification = TRUE;""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """SELECT COUNT(*) AS TotalPresentEmployees |
|
FROM ShiftManagement |
|
WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND ShiftStatus = 'PRESENT';""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên đi trễ trong ngày hôm nay?", |
|
"query": """SELECT COUNT(*) AS TotalLateEmployees |
|
FROM ShiftStatus |
|
WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND IsLate = TRUE;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên đã nghỉ phép hôm nay?", |
|
"query": """SELECT COUNT(*) AS TotalLeaveEmployees |
|
FROM ShiftStatus |
|
WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND IsLeavePermission = TRUE;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên đã làm thêm giờ hôm nay?", |
|
"query": """SELECT COUNT(*) AS TotalOvertimeEmployees |
|
FROM Attendance |
|
WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND IsOvertime = TRUE;""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """SELECT COUNT(*) AS TotalUnreadOvertimeEmployees |
|
FROM Attendance |
|
WHERE OvertimeStatus = 'UN_READ';""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """SELECT COUNT(*) AS TotalPresentAtLocation |
|
FROM Attendance |
|
JOIN WorkPlaceAttendance ON Attendance.WorkPlaceAttendance = WorkPlaceAttendance.WorkPlaceId |
|
WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND Type IN ('CHECK_IN', 'CHECK_OUT') AND WorkPlaceAttendance.LatLon = 'TOA_DO_CU_THE';""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên đi sớm về sớm có phép hôm nay?", |
|
"query": """SELECT COUNT(*) AS TotalComeBackSoonWithPermission |
|
FROM ShiftManagement |
|
WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND ComeBackSoonPermissionStatus = 'PERMISSION';""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên đi làm trong tuần này?", |
|
"query": """SELECT COUNT(*) AS TotalEmployeesPresent |
|
FROM ShiftStatus |
|
WHERE YYYYMMDD BETWEEN STRFTIME('%Y%m%d', 'now', 'weekday 0', '-6 days') AND STRFTIME('%Y%m%d', 'now', 'weekday 0') AND IsPresent = TRUE;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên nghỉ phép có lương trong tuần này?", |
|
"query": """SELECT COUNT(*) AS TotalPaidLeaveEmployees |
|
FROM ShiftStatus |
|
WHERE YYYYMMDD BETWEEN STRFTIME('%Y%m%d', 'now', 'weekday 0', '-6 days') AND STRFTIME('%Y%m%d', 'now', 'weekday 0') AND IsPaidLeave = TRUE;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên đi làm không phép trong tuần này?", |
|
"query": """SELECT COUNT(*) AS TotalAbsentWithoutPermission |
|
FROM ShiftStatus |
|
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;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên đi trễ không phép hôm nay?", |
|
"query": """SELECT COUNT(*) AS TotalLateWithoutPermission |
|
FROM ShiftStatus |
|
WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND IsLate = TRUE AND IsLatePermission = FALSE;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên chưa có sơ yếu lý lịch?", |
|
"query": """SELECT COUNT(*) AS TotalWithoutResume |
|
FROM EmployeeDetail |
|
WHERE HasResume = FALSE;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên có giấy khám sức khỏe?", |
|
"query": """SELECT COUNT(*) AS TotalWithHealthCertification |
|
FROM EmployeeDetail |
|
WHERE HasHealthCertification = TRUE;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên có bằng tốt nghiệp?", |
|
"query": """SELECT COUNT(*) AS TotalWithGraduationDegree |
|
FROM EmployeeDetail |
|
WHERE HasGraduationDegree = TRUE;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên có mã bảo hiểm xã hội?", |
|
"query": """SELECT COUNT(*) AS TotalWithSocialInsuranceId |
|
FROM EmployeeDetail |
|
WHERE SocialInsuranceId IS NOT NULL AND SocialInsuranceId <> '';""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên có mã số thuế?", |
|
"query": """SELECT COUNT(*) AS TotalWithTaxId |
|
FROM EmployeeDetail |
|
WHERE TaxId IS NOT NULL AND TaxId <> '';""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên đã điểm danh check-in hôm nay?", |
|
"query": """SELECT COUNT(*) AS TotalCheckIns |
|
FROM Attendance |
|
WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND Type = 'CHECK_IN';""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên đã điểm danh check-out hôm nay?", |
|
"query": """SELECT COUNT(*) AS TotalCheckOuts |
|
FROM Attendance |
|
WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND Type = 'CHECK_OUT';""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên đã check-in hộ người khác hôm nay?", |
|
"query": """SELECT COUNT(*) AS TotalCheckInOnBehalf |
|
FROM Attendance |
|
WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND Type = 'CHECK_IN_ON_BEHALF';""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên đã check-out hộ người khác hôm nay?", |
|
"query": """SELECT COUNT(*) AS TotalCheckOutOnBehalf |
|
FROM Attendance |
|
WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND Type = 'CHECK_OUT_ON_BEHALF';""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên có số người phụ thuộc lớn hơn 2?", |
|
"query": """SELECT COUNT(*) AS TotalEmployeesWithMoreThanTwoDependents |
|
FROM EmployeeDetail |
|
WHERE NumberOfDependents > 2;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên có hợp đồng lao động loại dài hạn?", |
|
"query": """SELECT COUNT(*) AS TotalLongTermContractEmployees |
|
FROM EmployeeDetail |
|
WHERE TypeOfContractId = (SELECT TypeOfContractId FROM ContractType WHERE Name = 'Long Term');""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên có hợp đồng lao động loại ngắn hạn?", |
|
"query": """SELECT COUNT(*) AS TotalShortTermContractEmployees |
|
FROM EmployeeDetail |
|
WHERE TypeOfContractId = (SELECT TypeOfContractId FROM ContractType WHERE Name = 'Short Term');""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên có hợp đồng part-time?", |
|
"query": """SELECT COUNT(*) AS TotalPartTimeEmployees |
|
FROM EmployeeDetail |
|
WHERE TypeOfWorkId = (SELECT TypeOfWorkId FROM WorkType WHERE Name = 'Part-Time');""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên đã nghỉ phép không lương trong tháng này?", |
|
"query": """SELECT COUNT(*) AS TotalUnpaidLeaveEmployees |
|
FROM ShiftStatus |
|
WHERE STRFTIME('%m', YYYYMMDD) = STRFTIME('%m', 'now') AND IsPaidLeave = FALSE AND IsLeavePermission = TRUE;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên đã nghỉ phép có lương trong tháng này?", |
|
"query": """SELECT COUNT(*) AS TotalPaidLeaveEmployees |
|
FROM ShiftStatus |
|
WHERE STRFTIME('%m', YYYYMMDD) = STRFTIME('%m', 'now') AND IsPaidLeave = TRUE AND IsLeavePermission = TRUE;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên đã có giấy khai sinh?", |
|
"query": """SELECT COUNT(*) AS TotalWithBirthCertificate |
|
FROM EmployeeDetail |
|
WHERE HasBirthCertificate = TRUE;""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """SELECT COUNT(*) AS TotalWithCitizenIdentification |
|
FROM EmployeeDetail |
|
WHERE HasCitizenIdentification = TRUE;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên có sổ hộ khẩu?", |
|
"query": """SELECT COUNT(*) AS TotalWithHouseRegistrationBook |
|
FROM EmployeeDetail |
|
WHERE HasHouseRegistrationBook = TRUE;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên có thu nhập chịu thuế trên 20 triệu đồng?", |
|
"query": """SELECT COUNT(*) AS TotalHighTaxableSalary |
|
FROM EmployeeDetail |
|
WHERE TaxableSalary > 20000000;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên có thu nhập chịu thuế dưới 10 triệu đồng?", |
|
"query": """SELECT COUNT(*) AS TotalLowTaxableSalary |
|
FROM EmployeeDetail |
|
WHERE TaxableSalary < 10000000;""" |
|
}, |
|
{ |
|
"input": "Lấy tổng số nhân viên có thuế thu nhập cá nhân trên 5 triệu đồng?", |
|
"query": """SELECT COUNT(*) AS TotalHighPersonalIncomeTax |
|
FROM EmployeeDetail |
|
WHERE PersonalIncomeTax > 5000000;""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """SELECT COUNT(*) AS TotalApprovedOvertimeEmployees |
|
FROM Attendance |
|
WHERE YYYYMMDD = STRFTIME('%Y%m%d', 'now') AND IsOvertime = TRUE AND OvertimeStatus = 'APPROVAL';""" |
|
}, |
|
{ |
|
"input": "Nhân viên nghỉ nhiều nhất trong 7 ngày qua?", |
|
"query": """SELECT e.FullName, COUNT(ss.Employee) AS TotalLeaves |
|
FROM ShiftStatus ss |
|
JOIN Employee e ON ss.Employee = e.Wallet |
|
WHERE ss.YYYYMMDD BETWEEN STRFTIME('%Y%m%d', 'now', '-6 days') AND STRFTIME('%Y%m%d', 'now') |
|
AND ss.IsLeavePermission = TRUE |
|
GROUP BY ss.Employee |
|
ORDER BY TotalLeaves DESC |
|
LIMIT 1; |
|
""" |
|
}, |
|
{ |
|
"input": "Nhân viên nghỉ nhiều nhất trong 1 tháng qua?", |
|
"query": """SELECT e.FullName, COUNT(*) AS TotalDaysOff |
|
FROM ShiftStatus ss |
|
JOIN Employee e ON ss.Employee = e.Wallet |
|
WHERE ss.IsLeavePermission = TRUE |
|
AND ss.YYYYMMDD BETWEEN STRFTIME('%Y%m%d', 'now', '-1 month') AND STRFTIME('%Y%m%d', 'now') |
|
GROUP BY e.FullName |
|
ORDER BY TotalDaysOff DESC |
|
LIMIT 1; |
|
""" |
|
}, |
|
{ |
|
"input": "Có bao nhiêu khách hàng nam/nữ ghé thăm cửa hàng hôm nay?", |
|
"query": """SELECT Gender, COUNT(*) AS CustomerCount |
|
FROM CustomerAtCheckInOut |
|
JOIN CheckInOut ON CustomerAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId |
|
WHERE DATE(CheckInOut.CheckTime) = DATE('now') -- Ngày hôm nay |
|
GROUP BY Gender; |
|
""" |
|
}, |
|
{ |
|
"input": "Có bao nhiêu khách hàng nam/nữ ghé thăm cửa hàng 2 ngày gần đây?", |
|
"query": """SELECT Gender, COUNT(*) AS CustomerCount |
|
FROM CustomerAtCheckInOut |
|
JOIN CheckInOut ON CustomerAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId |
|
WHERE DATE(CheckInOut.CheckTime) >= DATE('now', '-2 days') -- 2 ngày gần đây |
|
GROUP BY Gender; |
|
""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """SELECT |
|
CASE |
|
WHEN Age BETWEEN 18 AND 30 THEN '18-30' |
|
WHEN Age BETWEEN 31 AND 45 THEN '31-45' |
|
WHEN Age BETWEEN 46 AND 60 THEN '46-60' |
|
ELSE '60+' |
|
END AS AgeGroup, |
|
Emotion, |
|
COUNT(*) AS EmotionCount |
|
FROM CustomerAtCheckInOut |
|
GROUP BY AgeGroup, Emotion |
|
ORDER BY AgeGroup, Emotion; |
|
""" |
|
}, |
|
{ |
|
"input": "Bao nhiêu khách hàng cảm thấy khó chịu hôm nay?", |
|
"query": """SELECT COUNT(*) AS UncomfortableCustomerCount |
|
FROM CustomerAtCheckInOut |
|
JOIN CheckInOut ON CustomerAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId |
|
WHERE DATE(CheckInOut.CheckTime) = DATE('now') -- Ngày hôm nay |
|
AND Emotion IN ('Angry', 'Sad', 'Disgust', 'Fear'); |
|
""" |
|
}, |
|
{ |
|
"input": "Lý do chính khiến khách hàng bỏ về là gì?", |
|
"query": """SELECT CustomerReactionReason, COUNT(*) AS ReasonCount |
|
FROM CustomerAtCheckInOut |
|
GROUP BY CustomerReactionReason |
|
ORDER BY ReasonCount DESC |
|
LIMIT 1; |
|
""" |
|
}, |
|
{ |
|
"input": "Thời điểm nào trong ngày khách hàng ghé thăm nhiều nhất?", |
|
"query": """SELECT STRFTIME('%H', CheckTime) AS Hour, COUNT(*) AS CustomerCount |
|
FROM CheckInOut |
|
GROUP BY STRFTIME('%H', CheckTime) |
|
ORDER BY CustomerCount DESC |
|
LIMIT 1; |
|
""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """SELECT |
|
'Khách hàng hiện tại' AS Thông_số, |
|
(SELECT NumberofCustomer |
|
FROM CheckInOut |
|
WHERE CheckTime = (SELECT MAX(CheckTime) FROM CheckInOut)) AS Giá_trị |
|
UNION ALL |
|
SELECT |
|
'Khách hàng ngày hôm qua' AS Thông_số, |
|
(SELECT SUM(NumberofCustomer) |
|
FROM CheckInOut |
|
WHERE DATE(CheckTime) = DATE('now', '-1 day')) AS Giá_trị |
|
UNION ALL |
|
SELECT |
|
'Khách hàng hôm nay' AS Thông_số, |
|
(SELECT SUM(NumberofCustomer) |
|
FROM CheckInOut |
|
WHERE DATE(CheckTime) = DATE('now')) AS Giá_trị |
|
""" |
|
}, |
|
{ |
|
"input": "Tỉ lệ giới tính của khách hàng (nam/nữ) trong ngày hôm nay?", |
|
"query": """SELECT |
|
Gender, |
|
COUNT(*) AS GenderCount |
|
FROM CustomerAtCheckInOut c |
|
JOIN CheckInOut cio ON c.CheckInOutId = cio.CheckInOutId |
|
WHERE DATE(cio.CheckTime) = DATE('now') -- Filters records from today's date |
|
GROUP BY Gender; |
|
|
|
""" |
|
}, |
|
{ |
|
"input": "Nhóm tuổi nào chiếm đa số trong cửa hàng hôm nay?", |
|
"query": """WITH TodayCheckInOut AS ( |
|
SELECT CheckInOutId |
|
FROM CheckInOut |
|
WHERE DATE(CheckTime) = DATE('now') -- Lọc các bản ghi của hôm nay |
|
), |
|
AgeGroups AS ( |
|
SELECT |
|
CASE |
|
WHEN Age BETWEEN 18 AND 30 THEN '18-30' |
|
WHEN Age BETWEEN 31 AND 45 THEN '31-45' |
|
WHEN Age BETWEEN 46 AND 60 THEN '46-60' |
|
ELSE '60+' |
|
END AS AgeGroup, |
|
COUNT(*) AS Count |
|
FROM CustomerAtCheckInOut |
|
WHERE CheckInOutId IN (SELECT CheckInOutId FROM TodayCheckInOut) -- Chỉ lấy các khách hàng của hôm nay |
|
GROUP BY AgeGroup |
|
) |
|
SELECT AgeGroup, Count |
|
FROM AgeGroups |
|
ORDER BY Count DESC |
|
""" |
|
}, |
|
{ |
|
"input": "Tỉ lệ giới tính của khách hàng (nam/nữ) trong ngày hôm nay?", |
|
"query": """SELECT |
|
Gender, |
|
COUNT(*) AS GenderCount |
|
FROM CustomerAtCheckInOut c |
|
JOIN CheckInOut cio ON c.CheckInOutId = cio.CheckInOutId |
|
WHERE DATE(cio.CheckTime) = DATE('now') -- Filters records from today's date |
|
GROUP BY Gender; |
|
|
|
""" |
|
}, |
|
{ |
|
"input": "Có bao nhiêu khách hàng thuộc nhóm Gen Z trong ngày hôm nay?", |
|
"query": """SELECT COUNT(*) AS GenZCustomerCount |
|
FROM CustomerAtCheckInOut c |
|
JOIN CheckInOut ci ON c.CheckInOutId = ci.CheckInOutId |
|
WHERE (strftime('%Y', 'now') - c.Age) BETWEEN 1997 AND 2012 |
|
AND DATE(ci.CheckTime) = DATE('now'); |
|
""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """WITH CustomersToday AS ( |
|
SELECT |
|
CustomerId, |
|
Age, |
|
CheckInOut.CheckTime |
|
FROM |
|
CustomerAtCheckInOut |
|
INNER JOIN |
|
CheckInOut ON CustomerAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId |
|
WHERE |
|
DATE(CheckInOut.CheckTime) = DATE('now') -- Adjust 'now' if the date is stored in UTC or needs conversion |
|
), |
|
CustomersOver50 AS ( |
|
SELECT |
|
COUNT(*) AS Over50Count |
|
FROM |
|
CustomersToday |
|
WHERE |
|
Age > 50 |
|
), |
|
TotalCustomersToday AS ( |
|
SELECT |
|
COUNT(*) AS TotalCustomerCount |
|
FROM |
|
CustomersToday |
|
) |
|
SELECT |
|
(CAST(Over50Count AS FLOAT) / TotalCustomerCount) * 100 AS PercentageOver50 |
|
FROM |
|
CustomersOver50, TotalCustomersToday; |
|
""" |
|
}, |
|
{ |
|
"input": "Có bao nhiêu khách hàng thuộc nhóm Gen Z trong ngày hôm nay?", |
|
"query": """SELECT COUNT(*) AS GenZCustomerCount |
|
FROM CustomerAtCheckInOut c |
|
JOIN CheckInOut ci ON c.CheckInOutId = ci.CheckInOutId |
|
WHERE (strftime('%Y', 'now') - c.Age) BETWEEN 1997 AND 2012 |
|
AND DATE(ci.CheckTime) = DATE('now'); |
|
""" |
|
}, |
|
{ |
|
"input": "Phân bố sắc tộc của khách hàng là như thế nào?", |
|
"query": """SELECT |
|
Ethnicity, |
|
COUNT(CustomerId) AS CustomerCount, |
|
ROUND(COUNT(CustomerId) * 100.0 / (SELECT COUNT(*) FROM CustomerAtCheckInOut), 2) AS Percentage |
|
FROM |
|
CustomerAtCheckInOut |
|
GROUP BY |
|
Ethnicity; |
|
""" |
|
}, |
|
{ |
|
"input": "Khách hàng trong cửa hàng hôm nay mặc phong cách gì?", |
|
"query": """SELECT CACIO.ClothingStyle, COUNT(CACIO.CustomerId) AS NumberOfCustomers |
|
FROM CustomerAtCheckInOut CACIO |
|
JOIN CheckInOut CIO ON CACIO.CheckInOutId = CIO.CheckInOutId |
|
WHERE DATE(CIO.CheckTime) = DATE('now') -- Filters records for today |
|
GROUP BY CACIO.ClothingStyle; |
|
""" |
|
}, |
|
{ |
|
"input": "Có bao nhiêu khách hàng có ngoại hình thừa cân?", |
|
"query": """SELECT COUNT(*) AS TotalCustomers |
|
FROM CustomerAtCheckInOut |
|
WHERE Appearance IN ('Overweight'); |
|
""" |
|
}, |
|
{ |
|
"input": "Có bao nhiêu khách hàng có ngoại hình thiếu cân?", |
|
"query": """SELECT COUNT(*) AS TotalCustomers |
|
FROM CustomerAtCheckInOut |
|
WHERE Appearance IN ('Underweight'); |
|
""" |
|
}, |
|
{ |
|
"input": "Có bao nhiêu khách hàng có ngoại hình thiếu cân và thừa cân?", |
|
"query": """SELECT COUNT(*) AS TotalCustomers |
|
FROM CustomerAtCheckInOut |
|
WHERE Appearance IN ('Underweight', 'Overweight'); |
|
""" |
|
}, |
|
{ |
|
"input": "Phong cách ăn mặc phổ biến của khách hàng trong tuần qua là gì?", |
|
"query": """SELECT |
|
ClothingStyle, |
|
COUNT(ClothingStyle) AS StyleCount |
|
FROM |
|
CustomerAtCheckInOut CAC |
|
JOIN |
|
CheckInOut CIO ON CAC.CheckInOutId = CIO.CheckInOutId |
|
WHERE |
|
CIO.CheckTime >= DATETIME('now', '-7 days') -- Filter for the last 7 days |
|
GROUP BY |
|
ClothingStyle |
|
ORDER BY |
|
StyleCount DESC |
|
LIMIT 1; -- Return the most popular clothing style |
|
""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """SELECT COUNT(*) AS InternationalCustomers |
|
FROM CustomerAtCheckInOut C |
|
JOIN CheckInOut CI ON C.CheckInOutId = CI.CheckInOutId |
|
WHERE C.Ethnicity IN ('White', 'Black') -- Assuming these represent international customers |
|
AND DATE(CI.CheckTime) = DATE('now'); -- Checking visits made today |
|
""" |
|
}, |
|
{ |
|
"input": "Bao nhiêu khách hàng đến quán theo nhóm gia đình trong ngày hôm nay?", |
|
"query": """SELECT COUNT(*) AS FamilyGroupCustomerCount |
|
FROM CustomerAtCheckInOut ca |
|
JOIN CheckInOut ci ON ca.CheckInOutId = ci.CheckInOutId |
|
WHERE ca.GroupType = 'Family group' |
|
AND DATE(ci.CheckTime) = DATE('now'); |
|
""" |
|
}, |
|
{ |
|
"input": "Khách hàng solo hay đi theo nhóm đông hơn hôm nay?", |
|
"query": """WITH CurrentDate AS ( |
|
-- Step 1: Lấy ngày hiện tại theo định dạng YYYYMMDD |
|
SELECT strftime('%Y%m%d', 'now') AS Today |
|
) |
|
|
|
-- Step 2: Truy vấn để đếm số lượng khách hàng Solo và Group trong ngày hiện tại |
|
SELECT |
|
CASE WHEN GroupType = 'Solo' THEN 'Solo Customers' ELSE 'Group Customers' END AS CustomerType, |
|
COUNT(*) AS CustomerCount |
|
FROM CustomerAtCheckInOut |
|
JOIN CheckInOut ON CustomerAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId |
|
WHERE substr(CheckInOut.CheckTime, 1, 8) = (SELECT Today FROM CurrentDate) |
|
GROUP BY CustomerType |
|
ORDER BY CustomerCount DESC; |
|
|
|
""" |
|
}, |
|
{ |
|
"input": "Khách hàng solo hay đi theo nhóm đông hơn hôm nay?", |
|
"query": """-- Step 1: Set the current date in 'YYYY-MM-DD' format |
|
WITH CurrentDate AS ( |
|
SELECT DATE('now') AS Today |
|
) |
|
|
|
-- Step 2: Query to count solo and group customers today |
|
SELECT |
|
CASE WHEN GroupType = 'Solo' THEN 'Solo Customers' ELSE 'Group Customers' END AS CustomerType, |
|
COUNT(*) AS CustomerCount |
|
FROM CustomerAtCheckInOut |
|
JOIN CheckInOut ON CustomerAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId |
|
WHERE DATE(CheckInOut.CheckTime) = (SELECT Today FROM CurrentDate) |
|
GROUP BY CustomerType |
|
ORDER BY CustomerCount DESC; |
|
""" |
|
}, |
|
{ |
|
"input": "Khách hàng thường đến cửa hàng theo nhóm hay đơn lẻ trong 1 tháng qua?", |
|
"query": """SELECT |
|
GroupType, |
|
COUNT(*) AS VisitCount |
|
FROM |
|
CustomerAtCheckInOut |
|
WHERE |
|
CheckInOutId IN ( |
|
SELECT CheckInOutId |
|
FROM CheckInOut |
|
WHERE CheckTime >= DATE('now', '-1 month') |
|
) |
|
GROUP BY |
|
GroupType; |
|
""" |
|
}, |
|
{ |
|
"input": "Có bao nhiêu nhân viên chưa check-in hôm nay?", |
|
"query": """SELECT |
|
GroupType, |
|
COUNT(*) AS VisitCount |
|
FROM |
|
CustomerAtCheckInOut |
|
WHERE |
|
CheckInOutId IN ( |
|
SELECT CheckInOutId |
|
FROM CheckInOut |
|
WHERE CheckTime >= DATE('now', '-1 month') |
|
) |
|
GROUP BY |
|
GroupType; |
|
""" |
|
}, |
|
{ |
|
"input": "Khoảng thời gian check-in của tất cả nhân viên hôm qua?", |
|
"query": """SELECT |
|
A.Employee AS Wallet, |
|
E.FullName, |
|
DATETIME(A.Time) AS CheckInDayTime, |
|
W.LatLon AS WorkPlaceLocation |
|
FROM |
|
Attendance A |
|
JOIN |
|
Employee E ON A.Employee = E.Wallet |
|
JOIN |
|
WorkPlaceAttendance W ON A.WorkPlaceAttendance = W.WorkPlaceId |
|
WHERE |
|
A.Type = 'CHECK_IN' |
|
AND A.YYYYMMDD = strftime('%Y%m%d', date('now', '-1 day')) -- Lọc ngày hôm qua theo định dạng YYYYMMDD |
|
ORDER BY |
|
A.Time; |
|
""" |
|
}, |
|
{ |
|
"input": "Có nhân viên nào check-in sau 7h15 hôm qua không?", |
|
"query": """SELECT E.FullName, A.Employee, A.Time |
|
FROM Attendance A |
|
JOIN Employee E ON A.Employee = E.Wallet |
|
WHERE A.Type = 'CHECK_IN' |
|
AND A.Time > DATETIME('now', '-1 day', 'start of day', '+7 hours', '+15 minutes') |
|
AND A.Time < DATETIME('now', '-1 day', 'start of day', '+1 day'); |
|
|
|
""" |
|
}, |
|
{ |
|
"input": "Tôi cần danh sách nhân viên check-in trước 8 giờ sáng hôm nay.", |
|
"query": """SELECT E.FullName, A.Time AS CheckInTime |
|
FROM Attendance A |
|
JOIN Employee E ON A.Employee = E.Wallet |
|
WHERE A.Type = 'CHECK_IN' |
|
AND DATE(A.Time) = DATE('now') -- Ngày hôm nay |
|
AND TIME(A.Time) < '08:00:00'; -- Trước 8 giờ sáng |
|
|
|
""" |
|
}, |
|
{ |
|
"input": "Nhân viên Bùi Tiến Phát đã check-out lúc mấy giờ hôm nay?", |
|
"query": """SELECT A.Time |
|
FROM Attendance A |
|
JOIN Employee E ON A.Employee = E.Wallet |
|
WHERE E.FullName = 'Bùi Tiến Phát' |
|
AND A.Type = 'CHECK_OUT' |
|
AND A.YYYYMMDD = strftime('%Y%m%d', 'now'); -- Lọc theo ngày hôm nay (định dạng YYYYMMDD) |
|
|
|
""" |
|
}, |
|
{ |
|
"input": "Có nhân viên nào chưa check-out hôm nay không?", |
|
"query": """WITH CheckInsToday AS ( |
|
SELECT |
|
Employee, |
|
MAX(Time) AS LastCheckInTime |
|
FROM Attendance |
|
WHERE Type = 'CHECK_IN' |
|
AND YYYYMMDD = STRFTIME('%Y%m%d', DATE('now')) -- Lọc những lần check-in hôm nay |
|
GROUP BY Employee |
|
), |
|
CheckOutsToday AS ( |
|
SELECT |
|
Employee, |
|
MAX(Time) AS LastCheckOutTime |
|
FROM Attendance |
|
WHERE Type = 'CHECK_OUT' |
|
AND YYYYMMDD = STRFTIME('%Y%m%d', DATE('now')) -- Lọc những lần check-out hôm nay |
|
GROUP BY Employee |
|
) |
|
SELECT |
|
ci.Employee |
|
FROM CheckInsToday ci |
|
LEFT JOIN CheckOutsToday co |
|
ON ci.Employee = co.Employee |
|
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 |
|
""" |
|
}, |
|
{ |
|
"input": "Tôi muốn xem thời gian check-out trung bình của nhân viên trong tháng qua.", |
|
"query": """WITH LastMonthCheckOuts AS ( |
|
SELECT |
|
Employee, |
|
CheckOutTime |
|
FROM |
|
ShiftManagement |
|
WHERE |
|
ShiftStatus = 'PRESENT' |
|
AND strftime('%Y-%m', CheckOutTime) = strftime('%Y-%m', 'now', '-1 month') |
|
) |
|
SELECT |
|
AVG(julianday(CheckOutTime) - julianday(DATE(CheckOutTime))) * 24 AS AverageCheckOutTime |
|
FROM |
|
LastMonthCheckOuts; |
|
""" |
|
}, |
|
{ |
|
"input": "Nhân viên nào đã check-out sau 8h tối hôm nay?", |
|
"query": """SELECT e.FullName, a.Employee, a.Time AS CheckOutTime |
|
FROM Attendance a |
|
JOIN Employee e ON a.Employee = e.Wallet |
|
WHERE a.Type = 'CHECK_OUT' |
|
AND DATE(a.Time) = DATE('now') -- Lọc theo ngày hiện tại |
|
AND TIME(a.Time) > '20:00:00'; -- Lọc theo thời gian check-out sau 8 giờ tối |
|
""" |
|
}, |
|
{ |
|
"input": "Nhân viên Employee 3 đã check-out trước 5h chiều vào những ngày nào?", |
|
"query": """SELECT |
|
YYYYMMDD, |
|
CheckOutTime |
|
FROM |
|
ShiftManagement |
|
WHERE |
|
Employee = 'Employee 3' |
|
AND strftime('%H:%M', CheckOutTime) < '17:00'; |
|
|
|
""" |
|
}, |
|
{ |
|
"input": "Tôi cần xem danh sách nhân viên đã check-out sau 6 giờ chiều hôm nay.", |
|
"query": """SELECT e.FullName, e.Wallet, a.Time AS CheckOutTime |
|
FROM Employee e |
|
JOIN Attendance a ON e.Wallet = a.Employee |
|
WHERE a.Type = 'CHECK_OUT' |
|
AND DATE(a.Time) = DATE('now') -- Lọc những điểm danh của ngày hôm nay |
|
AND TIME(a.Time) > '18:00:00'; -- Chỉ lấy những lần check-out sau 6 giờ chiều |
|
|
|
""" |
|
}, |
|
{ |
|
"input": "Cảm xúc của nhân viên 'X' khi check-in hôm nay là gì?", |
|
"query": """WITH LastCheckIn AS ( |
|
SELECT a.AttendanceId, a.Employee, MAX(a.Time) AS LastCheckInTime |
|
FROM Attendance a |
|
JOIN Employee e ON a.Employee = e.Wallet |
|
WHERE e.FullName = 'X' |
|
AND a.Type = 'CHECK_IN' |
|
AND DATE(a.Time) = DATE('now') -- Lọc theo ngày hôm nay |
|
GROUP BY a.Employee |
|
) |
|
SELECT e.FullName, e.Wallet, e.LocationId, e.DepartmentId, e.PositionId, e.BranchId, |
|
e.PositionSalary, e.OnboardDateTime, ed.Gender, ed.Birthday, ed.PhoneNumber, |
|
ed.Email, ed.StatusOfWorkId, ed.TypeOfWorkId, ed.TypeOfContractId, ed.TaxableSalary, |
|
ed.PersonalIncomeTax, ed.PermanentAddress, ed.NumberOfDependents, ed.AcademicLevelId, |
|
ed.ID, ed.TaxId, ed.HealthInsuranceId, ed.SocialInsuranceId, ed.HasResume, ed.HasBirthCertificate, |
|
ed.HasCitizenIdentification, ed.HasHouseRegistrationBook, ed.HasHealthCertification, |
|
ed.HasGraduationDegree, sa.Emotion, sa.Behavior, sa.ClothingStyle, sa.Appearance |
|
FROM LastCheckIn lc |
|
JOIN Employee e ON lc.Employee = e.Wallet |
|
JOIN EmployeeDetail ed ON e.Wallet = ed.Wallet |
|
JOIN Attendance a ON a.AttendanceId = lc.AttendanceId |
|
JOIN StaffAtCheckInOut sa ON sa.CheckInOutId = a.AttendanceId |
|
WHERE lc.LastCheckInTime = ( |
|
SELECT MAX(CheckTime) |
|
FROM CheckInOut ci |
|
WHERE ci.CheckTime <= lc.LastCheckInTime |
|
); |
|
""" |
|
}, |
|
{ |
|
"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ì?", |
|
"query": """WITH ThisWeek AS ( |
|
SELECT s.Emotion |
|
FROM StaffAtCheckInOut s |
|
JOIN CheckInOut c ON s.CheckInOutId = c.CheckInOutId |
|
WHERE strftime('%Y-%W', c.CheckTime) = strftime('%Y-%W', 'now') -- Lọc theo tuần hiện tại |
|
) |
|
SELECT Emotion, COUNT(*) as Count |
|
FROM ThisWeek |
|
GROUP BY Emotion |
|
ORDER BY Count DESC; |
|
); |
|
""" |
|
}, |
|
{ |
|
"input": "Có bao nhiêu nhân viên cảm thấy căng thẳng sau giờ làm hôm nay?", |
|
"query": """WITH EmployeeCheckOut AS ( |
|
SELECT A.Employee, A.Time, A.YYYYMMDD, S.Emotion |
|
FROM Attendance A |
|
JOIN StaffAtCheckInOut S ON A.Employee = S.StaffId |
|
WHERE A.Type = 'CHECK_OUT' |
|
AND S.Emotion IN ('Angry', 'Fear', 'Sad', 'Disgust') |
|
AND A.YYYYMMDD = strftime('%Y%m%d', 'now') -- Kiểm tra ngày hôm nay |
|
) |
|
SELECT COUNT(DISTINCT Employee) AS StressedEmployees |
|
FROM EmployeeCheckOut; |
|
); |
|
""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """WITH EmployeeWallet AS ( |
|
SELECT Wallet |
|
FROM Employee |
|
WHERE FullName = 'Employee 3' |
|
), |
|
TodayShift AS ( |
|
SELECT ShiftId |
|
FROM ShiftManagement |
|
WHERE Employee IN (SELECT Wallet FROM EmployeeWallet) |
|
AND DATE(CheckInTime) = DATE('now') -- Lấy các ca làm việc trong ngày hôm nay |
|
), |
|
TodayCheckInOut AS ( |
|
SELECT CheckInOutId |
|
FROM CheckInOut |
|
WHERE CheckTime BETWEEN (SELECT MIN(CheckInTime) FROM ShiftManagement WHERE ShiftId IN (SELECT ShiftId FROM TodayShift)) |
|
AND (SELECT MAX(CheckOutTime) FROM ShiftManagement WHERE ShiftId IN (SELECT ShiftId FROM TodayShift)) |
|
) |
|
SELECT Emotion |
|
FROM StaffAtCheckInOut |
|
WHERE StaffId IN (SELECT Wallet FROM EmployeeWallet) |
|
AND CheckInOutId IN (SELECT CheckInOutId FROM TodayCheckInOut); |
|
|
|
); |
|
""" |
|
}, |
|
{ |
|
"input": "Tôi cần xem thống kê cảm xúc của nhân viên trong tháng qua.", |
|
"query": """SELECT |
|
Emotion, |
|
COUNT(*) AS EmotionCount |
|
FROM |
|
StaffAtCheckInOut |
|
JOIN |
|
CheckInOut ON StaffAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId |
|
WHERE |
|
CheckTime BETWEEN DATE('now', 'start of month') AND DATE('now', 'localtime') |
|
GROUP BY |
|
Emotion; |
|
""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """WITH EmployeeWallet AS ( |
|
SELECT Wallet |
|
FROM Employee |
|
WHERE FullName = 'Employee 3' |
|
), |
|
TodayShift AS ( |
|
SELECT ShiftId |
|
FROM ShiftManagement |
|
WHERE Employee IN (SELECT Wallet FROM EmployeeWallet) |
|
AND DATE(CheckInTime) = DATE('now') -- Lấy các ca làm việc trong ngày hôm nay |
|
), |
|
TodayCheckInOut AS ( |
|
SELECT CheckInOutId |
|
FROM CheckInOut |
|
WHERE CheckTime BETWEEN (SELECT MIN(CheckInTime) FROM ShiftManagement WHERE ShiftId IN (SELECT ShiftId FROM TodayShift)) |
|
AND (SELECT MAX(CheckOutTime) FROM ShiftManagement WHERE ShiftId IN (SELECT ShiftId FROM TodayShift)) |
|
) |
|
SELECT Emotion |
|
FROM StaffAtCheckInOut |
|
WHERE StaffId IN (SELECT Wallet FROM EmployeeWallet) |
|
AND CheckInOutId IN (SELECT CheckInOutId FROM TodayCheckInOut); |
|
|
|
); |
|
""" |
|
}, |
|
{ |
|
"input": "Tôi cần xem thống kê cảm xúc của nhân viên trong tháng qua.", |
|
"query": """SELECT |
|
Emotion, |
|
COUNT(*) AS EmotionCount |
|
FROM |
|
StaffAtCheckInOut |
|
JOIN |
|
CheckInOut ON StaffAtCheckInOut.CheckInOutId = CheckInOut.CheckInOutId |
|
WHERE |
|
CheckTime BETWEEN DATE('now', 'start of month') AND DATE('now', 'localtime') |
|
GROUP BY |
|
Emotion; |
|
""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """WITH CurrentWeek AS ( |
|
SELECT |
|
DATE('now', 'weekday 0', '-7 days') AS WeekStart, -- Bắt đầu của tuần hiện tại (Chủ nhật trước) |
|
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) |
|
) |
|
SELECT |
|
e.FullName, |
|
sa.Emotion, |
|
sa.CheckInOutId, |
|
c.CheckTime |
|
FROM |
|
StaffAtCheckInOut sa |
|
JOIN |
|
CheckInOut c ON sa.CheckInOutId = c.CheckInOutId |
|
JOIN |
|
Employee e ON sa.StaffId = e.Wallet |
|
WHERE |
|
sa.Emotion IN ('Angry', 'Sad', 'Fear', 'Disgust') -- Cảm xúc tiêu cực |
|
AND DATE(c.CheckTime) BETWEEN (SELECT WeekStart FROM CurrentWeek) AND (SELECT WeekEnd FROM CurrentWeek) -- Trong tuần hiện tại |
|
AND c.CheckTime = ( |
|
SELECT MIN(c2.CheckTime) |
|
FROM CheckInOut c2 |
|
WHERE c2.CheckInOutId = c.CheckInOutId |
|
); -- Chỉ lấy lần CHECK_IN đầu tiên |
|
""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """WITH EmployeeCheck AS ( |
|
SELECT E.Wallet, E.FullName, S.IsLate, S.IsLatePermission, S.IsComebackSoon, S.IsComebackSoonPermission, |
|
A.Type AS AttendanceType, A.Time AS AttendanceTime, A.IsOvertime, A.OvertimeStatus, SA.Emotion, SA.Behavior |
|
FROM Employee E |
|
JOIN ShiftStatus S ON E.Wallet = S.Employee |
|
JOIN Attendance A ON E.Wallet = A.Employee AND A.YYYYMMDD = strftime('%Y%m%d', 'now') |
|
LEFT JOIN StaffAtCheckInOut SA ON E.Wallet = SA.StaffId |
|
WHERE E.FullName = 'Employee 3' AND S.YYYYMMDD = strftime('%Y%m%d', 'now') |
|
) |
|
SELECT * |
|
FROM EmployeeCheck |
|
WHERE |
|
-- Kiểm tra nếu đi trễ không phép |
|
(IsLate = 1 AND IsLatePermission = 0) |
|
OR |
|
-- Kiểm tra nếu về sớm không phép |
|
(IsComebackSoon = 1 AND IsComebackSoonPermission = 0) |
|
OR |
|
-- Kiểm tra nếu có cảm xúc tiêu cực từ camera |
|
Emotion IN ('Angry', 'Sad', 'Disgust', 'Fear') |
|
OR |
|
-- Kiểm tra nếu có hành vi bất thường từ camera |
|
Behavior IN ('Taking photo', 'Talking/Pointing'); |
|
""" |
|
}, |
|
{ |
|
"input": "Tôi muốn xem danh sách nhân viên đi trễ trong tuần.", |
|
"query": """WITH CurrentWeek AS ( |
|
SELECT |
|
STRFTIME('%Y%m%d', DATE('now', 'weekday 0', '-6 days')) AS WeekStart, -- Ngày bắt đầu tuần (thứ 2) |
|
STRFTIME('%Y%m%d', DATE('now', 'weekday 0')) AS WeekEnd -- Ngày kết thúc tuần (Chủ nhật) |
|
) |
|
SELECT |
|
E.FullName, |
|
E.Wallet, |
|
S.YYYYMMDD, |
|
S.IsLate, |
|
S.IsLatePermission |
|
FROM |
|
ShiftStatus S |
|
JOIN |
|
Employee E ON S.Employee = E.Wallet |
|
JOIN |
|
CurrentWeek CW ON S.YYYYMMDD BETWEEN CW.WeekStart AND CW.WeekEnd |
|
WHERE |
|
S.IsLate = TRUE AND S.IsLatePermission = FALSE; -- Chỉ lấy nhân viên đi trễ mà không có phép |
|
""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """WITH CheckInToday AS ( |
|
SELECT |
|
Employee, |
|
ShiftId, |
|
WorkPlaceAttendance, |
|
Time AS CheckInTime |
|
FROM Attendance |
|
WHERE |
|
Type = 'CHECK_IN' |
|
AND YYYYMMDD = strftime('%Y%m%d', 'now') |
|
), |
|
CheckOutToday AS ( |
|
SELECT |
|
Employee, |
|
ShiftId, |
|
WorkPlaceAttendance, |
|
Time AS CheckOutTime |
|
FROM Attendance |
|
WHERE |
|
Type = 'CHECK_OUT' |
|
AND YYYYMMDD = strftime('%Y%m%d', 'now') |
|
) |
|
SELECT |
|
e.FullName, |
|
e.Wallet, |
|
c1.CheckInTime, |
|
s.ShiftStatus |
|
FROM |
|
CheckInToday c1 |
|
LEFT JOIN CheckOutToday c2 ON c1.Employee = c2.Employee AND c1.ShiftId = c2.ShiftId |
|
JOIN Employee e ON c1.Employee = e.Wallet |
|
JOIN ShiftManagement s ON c1.Employee = s.Employee AND c1.ShiftId = s.ShiftId |
|
WHERE |
|
c2.CheckOutTime IS NULL |
|
AND s.ShiftStatus = 'PRESENT'; |
|
""" |
|
}, |
|
{ |
|
"input": "Nhân viên tên 'Employee3' đã có hành vi như thế nào khi check-out hôm nay?", |
|
"query": """WITH TodayAttendance AS ( |
|
-- Lấy thông tin check-out của Employee3 hôm nay |
|
SELECT A.Employee, A.Type, A.Time, A.WorkPlaceAttendance, S.Behavior, S.Emotion |
|
FROM Attendance A |
|
JOIN Employee E ON A.Employee = E.Wallet |
|
JOIN StaffAtCheckInOut S ON A.AttendanceId = S.CheckInOutId |
|
WHERE E.FullName = 'Employee3' |
|
AND A.Type = 'CHECK_OUT' |
|
AND DATE(A.Time) = DATE('now') -- Chỉ lấy dữ liệu của ngày hôm nay |
|
) |
|
SELECT * |
|
FROM TodayAttendance; |
|
""" |
|
}, |
|
{ |
|
"input": "Nhân viên tên 'Employee3' đã có hành vi như thế nào khi check-out hôm nay?", |
|
"query": """WITH TodayAttendance AS ( |
|
-- Lấy thông tin check-out của Employee3 hôm nay |
|
SELECT A.Employee, A.Type, A.Time, A.WorkPlaceAttendance, S.Behavior, S.Emotion |
|
FROM Attendance A |
|
JOIN Employee E ON A.Employee = E.Wallet |
|
JOIN StaffAtCheckInOut S ON A.AttendanceId = S.CheckInOutId |
|
WHERE E.FullName = 'Employee3' |
|
AND A.Type = 'CHECK_OUT' |
|
AND DATE(A.Time) = DATE('now') -- Chỉ lấy dữ liệu của ngày hôm nay |
|
) |
|
SELECT * |
|
FROM TodayAttendance; |
|
""" |
|
}, |
|
{ |
|
"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.", |
|
"query": """SELECT |
|
A.Time AS CheckTime, |
|
A.Type AS CheckType, |
|
A.YYYYMMDD |
|
FROM |
|
Attendance A |
|
JOIN |
|
Employee E ON A.Employee = E.Wallet |
|
WHERE |
|
E.FullName = 'Employee 5' |
|
AND strftime('%Y-%m', A.Time) = strftime('%Y-%m', 'now') -- Lọc dữ liệu trong tháng hiện tại |
|
ORDER BY |
|
A.Time ASC; |
|
""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """WITH LateCheckIn AS ( |
|
SELECT |
|
s.Employee, |
|
s.IsLate |
|
FROM |
|
ShiftStatus s |
|
WHERE |
|
s.IsLate = TRUE |
|
AND s.YYYYMMDD = strftime('%Y%m%d', 'now') -- Chỉ lấy dữ liệu ngày hôm nay |
|
), |
|
NegativeEmotion AS ( |
|
SELECT |
|
sc.StaffId |
|
FROM |
|
StaffAtCheckInOut sc |
|
WHERE |
|
sc.Emotion IN ('Angry', 'Sad', 'Disgust', 'Fear') -- Chọn các cảm xúc tiêu cực |
|
AND EXISTS ( |
|
SELECT 1 |
|
FROM CheckInOut c |
|
WHERE c.CheckInOutId = sc.CheckInOutId |
|
AND strftime('%Y%m%d', c.CheckTime) = strftime('%Y%m%d', 'now') -- Chỉ lấy dữ liệu của hôm nay |
|
) |
|
) |
|
SELECT |
|
COUNT(DISTINCT l.Employee) AS NumLateAndNegativeEmotion |
|
FROM |
|
LateCheckIn l |
|
JOIN |
|
NegativeEmotion ne ON l.Employee = ne.StaffId; |
|
""" |
|
}, |
|
{ |
|
"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.", |
|
"query": """WITH LastMonth AS ( |
|
SELECT strftime('%Y-%m', 'now', '-1 month') AS LastMonth |
|
) |
|
SELECT DISTINCT |
|
E.FullName AS EmployeeName, |
|
E.Wallet AS EmployeeWallet, |
|
A.Type AS CheckType, |
|
A.Time AS CheckTime, |
|
A.IsOvertime, |
|
A.OvertimeStatus, |
|
A.Reason AS CheckReason, |
|
A.OnBehalfStatus, |
|
SM.ShiftStatus, |
|
SM.LatePermissionStatus, |
|
SM.ComeBackSoonPermissionStatus, |
|
SM.LeavePermissionStatus |
|
FROM Attendance A |
|
JOIN Employee E ON A.Employee = E.Wallet |
|
LEFT JOIN ShiftManagement SM ON A.ShiftId = SM.ShiftId AND A.Employee = SM.Employee |
|
JOIN LastMonth L ON strftime('%Y-%m', A.Time) = L.LastMonth |
|
WHERE A.Type IN ('CHECK_IN', 'CHECK_IN_ON_BEHALF') and E.FullName = 'Employee 9' |
|
ORDER BY A.Time ASC; |
|
""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """WITH EmployeeData AS ( |
|
SELECT e.Wallet |
|
FROM Employee e |
|
WHERE e.FullName = 'Employee 9' |
|
), |
|
YesterdayData AS ( |
|
SELECT |
|
s.StaffId, |
|
s.Emotion, |
|
s.Behavior, |
|
c.CheckTime |
|
FROM StaffAtCheckInOut s |
|
JOIN CheckInOut c ON s.CheckInOutId = c.CheckInOutId |
|
WHERE s.StaffId = (SELECT Wallet FROM EmployeeData) |
|
AND DATE(c.CheckTime) = DATE('now', '-1 day') -- Ngày hôm qua |
|
) |
|
SELECT |
|
Emotion, |
|
Behavior, |
|
CheckTime, |
|
CASE |
|
WHEN Emotion IN ('Angry', 'Fear', 'Sad', 'Disgust') THEN 'Negative Emotion' |
|
ELSE 'Normal Emotion' |
|
END AS EmotionStatus, |
|
CASE |
|
WHEN Behavior IN ('Taking photo', 'Talking/Pointing') THEN 'Unusual Behavior' |
|
ELSE 'Normal Behavior' |
|
END AS BehaviorStatus |
|
FROM YesterdayData |
|
WHERE Emotion IN ('Angry', 'Fear', 'Sad', 'Disgust') |
|
OR Behavior IN ('Taking photo', 'Talking/Pointing'); |
|
""" |
|
}, |
|
{ |
|
"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.", |
|
"query": """WITH ThisWeekAttendance AS ( |
|
-- Lấy tất cả dữ liệu điểm danh của tuần này |
|
SELECT |
|
A.Employee, |
|
A.Type, |
|
A.Time, |
|
A.WorkPlaceAttendance, |
|
A.IsOvertime, |
|
A.OvertimeStatus, |
|
A.ShiftId, |
|
A.OnBehalfStatus |
|
FROM Attendance A |
|
WHERE strftime('%W', A.Time) = strftime('%W', 'now') -- Lọc theo tuần hiện tại |
|
), |
|
|
|
ThisWeekShiftStatus AS ( |
|
-- Lấy dữ liệu trạng thái làm việc của tuần này |
|
SELECT |
|
S.Employee, |
|
S.YYYYMMDD, |
|
S.IsDayOff, |
|
S.IsPresent, |
|
S.IsLate, |
|
S.IsLatePermission, |
|
S.IsComebackSoon, |
|
S.IsComebackSoonPermission, |
|
S.IsLeavePermission, |
|
S.IsPaidLeave |
|
FROM ShiftStatus S |
|
WHERE strftime('%W', date(substr(S.YYYYMMDD, 1, 4) || '-' || |
|
substr(S.YYYYMMDD, 5, 2) || '-' || |
|
substr(S.YYYYMMDD, 7, 2))) = strftime('%W', 'now') -- Lọc theo tuần hiện tại |
|
) |
|
|
|
-- Tổng hợp thông tin điểm danh và hành vi vi phạm trong tuần này |
|
SELECT |
|
E.FullName AS EmployeeName, |
|
E.DepartmentId, |
|
E.PositionId, |
|
COALESCE(SUM(CASE WHEN TW.Type = 'CHECK_OUT' THEN 1 ELSE 0 END), 0) AS CheckOutCount, |
|
COALESCE(SUM(CASE WHEN TWS.IsLate = 1 AND TWS.IsLatePermission = 0 THEN 1 ELSE 0 END), 0) AS LateWithoutPermissionCount, |
|
COALESCE(SUM(CASE WHEN TWS.IsComebackSoon = 1 AND TWS.IsComebackSoonPermission = 0 THEN 1 ELSE 0 END), 0) AS EarlyLeaveWithoutPermissionCount, |
|
COALESCE(SUM(CASE WHEN TWS.IsPresent = 0 AND TWS.IsDayOff = 0 THEN 1 ELSE 0 END), 0) AS AbsentWithoutReasonCount |
|
FROM Employee E |
|
LEFT JOIN ThisWeekAttendance TW ON E.Wallet = TW.Employee |
|
LEFT JOIN ThisWeekShiftStatus TWS ON E.Wallet = TWS.Employee |
|
GROUP BY E.FullName, E.DepartmentId, E.PositionId |
|
ORDER BY E.FullName; |
|
|
|
""" |
|
}, |
|
{ |
|
"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?", |
|
"query": """SELECT |
|
StoreId, |
|
CleanlinessStatus, |
|
CASE |
|
WHEN CleanlinessStatus = 'Clean' THEN 'Sạch sẽ' |
|
WHEN CleanlinessStatus = 'Dirty' THEN 'Bẩn' |
|
WHEN CleanlinessStatus = 'On fire' THEN 'Cửa hàng đang cháy' |
|
WHEN CleanlinessStatus = 'Under attack' THEN 'Cửa hàng đang bị tấn công' |
|
ELSE 'Tình trạng không rõ' |
|
END AS StoreCondition, |
|
LastUpdate |
|
FROM StoreStatus |
|
ORDER BY LastUpdate DESC; |
|
""" |
|
}, |
|
{ |
|
"input": "Có cảnh báo nào về độ sạch của quán không?", |
|
"query": """SELECT StoreId, CleanlinessStatus, LastUpdate |
|
FROM StoreStatus |
|
WHERE CleanlinessStatus IN ('Dirty', 'On fire', 'Under attack'); |
|
""" |
|
}, |
|
{ |
|
"input": "Tình trạng vệ sinh chung của cửa hàng hôm nay như thế nào?", |
|
"query": """SELECT StoreId, CleanlinessStatus, LastUpdate |
|
FROM StoreStatus |
|
WHERE DATE(LastUpdate) = DATE('now'); |
|
""" |
|
}, |
|
] |