什麼是在MySQL中考慮Group By函數的最佳方式?MySQL按訂單和計數(獨特)
我正在寫一個MySQL查詢,以通過Excel中的數據透視表中的ODBC連接提取數據,以便用戶可以輕鬆訪問數據。
例如,我有:
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 week(statistic_date,4), Site, Cost_Center, Emp_ID
VS
Group by Site, Cost_Center, week(statistic_date,4), Emp_ID
其他注意事項:
-Employees可以工作任意天數。有些人正在工作4 x 10,其他人5 x 8,如果他們報名參加OT,可能需要第六天。如果我按周計算總數,我會得到每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
如果你在'select'中沒有聚合函數,爲什麼你在這個查詢中有'group by'? –