gpt4 book ai didi

MySQL 按顺序和计数分组(不同)

转载 作者:行者123 更新时间:2023-11-30 00:43:27 27 4
gpt4 key购买 nike

思考 MySQL 中的 Group By 函数的最佳方式是什么?

我正在编写一个 MySQL 查询,通过 ODBC 连接在 Excel 的数据透视表中提取数据,以便用户可以轻松访问数据。

例如,我有:

Select 
statistic_date,
week(statistic_date,4),
year(statistic_date),
Emp_ID,
count(distict Emp_ID),
Site
Cost_Center

我正在尝试按周计算我们每个站点的独特员工数量。我遇到的问题是在年底左右,日历年并不总是匹配的,因此按日期排列它们很重要,这样我就可以使用数据透视表手动过滤到正确的日期(2013/2014 年有我们必须添加第 53 周 + 第 1 周)。

我正在尝试使用不同的 group by 语句,但我不确定顺序如何重要以及切换它们时会发生什么变化。

Group by week(statistic_date,4), Site, Cost_Center, Emp_ID

对比

Group by Site, Cost_Center, week(statistic_date,4), Emp_ID

其他注意事项:

-员工可以工作任意天数。有些人工作 4 x 10 次,其他人工作 5 x 8 次,如果他们报名加类,可能会工作到第六天。如果我按周对计数进行求和,则每个 Emp_ID 的计数在 3 到 7 之间。我希望本周能获得 1 个。

-每个员工都有不同的工资代码,因此当我们按天查看时,不同的计数会有所帮助(VTO = 自愿休假,OT = 加类,LOA = 缺勤等)。不同的计数将显示 1,而通常情况下,同一天我会为同一雇员拥有 2-3 个(达到 40 小时并开始累积 OT,然后在同一天使用 VTO 或使用个人时间)。

我从我编写的一个查询开始,以了解我们每周的带薪工作时间。我正在尝试对其进行调整以适应此应用程序。实际代码如下:

SELECT
dkh.STATISTIC_DATE AS 'Date'
,week(dkh.STATISTIC_DATE,4) as 'Week'
,month(dkh.STATISTIC_DATE) as 'Month'
,year(dkh.STATISTIC_DATE) as 'Year'
,dkh.SITE AS 'Site ID Short'
,aep.LOC_DESCR as 'Site Name'
,dkh.EMPLOYEE_ID AS 'Employee ID'
,count(distinct dkh.EMPLOYEE_ID) AS 'Distinct Employee ID'
,aep.NAME AS 'Employee Name'
,aep.BUSINESS_TITLE AS 'Business_Ttile'
,aep.SPRVSR_NAME AS 'Manager'
,SUBSTR(aep.DEPTID,1,4) AS 'Cost_Center'
,dkh.PAY_CODE
,dkh.PAY_CODE_SHORT
,dkh.HOURS

FROM metrics.DAT_KRONOS_HOURS dkh

JOIN metrics.EMPLOYEES_PUBLIC aep
ON aep.SNAPSHOT_DATE = SUBDATE(dkh.STATISTIC_DATE, DAYOFWEEK(dkh.STATISTIC_DATE) + 1)
AND aep.EMPLID = dkh.EMPLOYEE_ID

WHERE dkh.STATISTIC_DATE BETWEEN adddate(now(), interval -1 year) AND DATE(now())

group by dkh.SITE, SUBSTR(aep.DEPTID,1,4), week(dkh.STATISTIC_DATE,4), dkh.STATISTIC_DATE, dkh.EMPLOYEE_ID

最佳答案

您在分组依据中使用的顺序并不重要。每个独特的值组合都有自己的一组。选择不作为分组依据的列会给您带来一些随意的结果;您可能想对它们使用一些聚合函数,例如 SUM 来获取组总数。

按从已在分组依据中使用的其他值派生的值进行分组(如下所示)并不是很有用。

week(dkh.STATISTIC_DATE,4), dkh.STATISTIC_DATE

如果两行有不同的星期,它们也会有不同的日期,对吗?

关于MySQL 按顺序和计数分组(不同),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21581889/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com