我有一个表员工,其中包含以下属性: EmployeeID,DateOfHire,姓名,姓氏。
DateOfHire 的格式为 YYY-MM-DD HH:HH:HH (smalldatetime)。 我正在使用微软的SSMS。
我想知道每年雇用多少员工。
我试过这样的事情:
from DigitalClockFile import DigitalClock
from generatedUI import Ui_mainWindow
from PyQt5.QtCore import QTime, QTimer
from PyQt5.QtWidgets import QApplication, QLCDNumber
from PyQt5 import QtWidgets,QtCore
class transformedUI(Ui_mainWindow):
def __init__(self):
super(transformedUI,self).__init__()
def setupUi(self,mainWindow):
super(transformedUI,self).setupUi(mainWindow)
self.DigitalClock=DigitalClock(self.centralwidget)
self.DigitalClock.setGeometry(QtCore.QRect(110, 190, 200, 100))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
mainWindow = QtWidgets.QMainWindow()
ui = transformedUI()
ui.setupUi(mainWindow)
mainWindow.show()
sys.exit(app.exec_())
这个有效,但我不想使用 DATEPART 。
和此:
SELECT DATEPART(YEAR,DateOfHire), COUNT(EmployeeID) AS
HiredEmployees
FROM Employees
GROUP BY DATEPART(YEAR,DateOfHire)
第一个是好的,而第二个给我一个转换错误(smalldatetime - 字符串)。
按雇佣年份对员工进行分组的最简单方法是什么?可以在不使用 DATEPART 或任何功能的情况下完成吗?
答案 0 :(得分:1)
试试这个:
SELECT YEAR(DateOfHire), COUNT(EmployeeID) AS HiredEmployees
FROM Employees
GROUP BY YEAR(DateOfHire)
它将为您提供Employees表中每个日期的年份以及与其匹配的员工ID的计数。
这假设DateOfHire字段是日期列
答案 1 :(得分:1)
我无法看到你的第一个不起作用:
select YEAR(DateOfHire) yr,COUNT(*) ct
from Employees
group by YEAR(DateOFHire)
答案 2 :(得分:1)
使用DATEPART
或类似功能是您最好的选择。你第一节的方式就好了。我建议只使用它。另外,为了使代码更易于阅读,您可以使用DATEPART
:
SELECT *,COUNT(EmployeeID) FROM (
SELECT
*,
DATEPART(YEAR,DateOfHire) AS YearOfHire
FROM Employees
)
GROUP BY YearOfHire
答案 3 :(得分:1)
按雇佣年份对员工进行分组的最简单方法是什么?可以在不使用DATEPART或任何功能的情况下完成吗?
没有。 DATEPART或YEAR是您最好的选择。如果您愿意,可以创建一个计算列Year,它将从您的datetime计算出来。然后,您可以按此列进行分组,而无需任何功能。而且我也会为此查询在此列上创建一个索引。
ALTER TABLE Employees
ADD DateOfHireYear AS DATEPART(YEAR,DateOfHire) PERSISTED
GO
SELECT DateOfHireYear, COUNT(EmployeeID) AS
HiredEmployees
FROM Employees
GROUP BY DateOfHireYear