首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自学sql,分组结果错误

自学sql,分组结果错误
EN

Stack Overflow用户
提问于 2011-06-24 21:03:38
回答 1查看 104关注 0票数 0

在oracle 11g上自学SQL,并使用一个员工信息数据库。

我试图返回每个“办公室”的员工工作的总小时数和总天数。

但是,“工作小时数”返回每个员工轮班的正确时间,但作为单独的行,而不是具有总天数和总小时数的一行。(这意味着每行的天数= 1)

代码语言:javascript
运行
复制
SELECT L.OFFICE_NAME as "Shop", 
(us.LAST_NAME || ' , ' || us.FIRST_NAME) AS "Employee Name",
COUNT(distinct shift.shift_date) as "WORK DAYS",
round((shift2.MaxSignOffTime-shift.MinSignOnTime)*24, 1) AS "WORK HOURS",

FROM 
LOCAL_OFFICE L
JOIN 
    Orders ord
    ON L.LOCAL_OFFICE_ID = ord.LOCAL_OFFICE_ID
JOIN  
    USERS us
    ON
     us.USER_ID = ord.ASSIGNED_TO_USER_ID
join
    (SELECT min(act_sign_dt) as MinSignOnTime, USER_ID, shift_token 
FROM CLIENT_SIGN 
WHERE
    BEG_OF_SHIFT = 'Y'
GROUP BY shift_date, user_id, shift_token)  shift on shift. user_id = ord.assigned_to_user_id
join
    (SELECT max(act_sign_dt) as MaxSignOffTime, USER_ID, shift_token 
FROM CLIENT_SIGN 
WHERE
    end_OF_SHIFT = 'Y'
GROUP BY shift_date, user_id, shift_token)  shift2 on shift2.shift_token = shift.shift_token

GROUP BY OFFICE_NAME, LAST_NAME, FIRST_NAME,shift.shift_date, (shift2.MaxSignOffTime-shift.MinSignOnTime)
ORDER BY OFFICE_NAME, "Employee Name"

我愿意回答任何需要的问题,但我就是不明白为什么不将每个办公室位置的每个员工分成一行

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-24 21:17:49

试试这个。

在SELECT中放置一个Sum():

代码语言:javascript
运行
复制
round((shift2.MaxSignOffTime-shift.MinSignOnTime)*24, 1)

然后去掉这个:

代码语言:javascript
运行
复制
(shift2.MaxSignOffTime-shift.MinSignOnTime)

从GROUP BY子句

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6468182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档