SELECT
ID AS Employee_Name,
department AS Employee_Department,
business_unit AS Employee_Business,
SUM(hours_used) Employee_Hours
FROM
TableX
WHERE
Day_Used BETWEEN 04/01/2014 AND 04/30/2014
GROUP BY
department
这是我当前的SQL语句,我尝试做的是从数据库中获取输出但是我没有成功,也许你们可以指出原因。
目标是按部门汇总所有员工小时数,并在给定日期之间按部门对其进行分组。我知道我的声明现在不会显示这些信息,我目前只是想弄清楚为什么我无法获得任何输出。
谢谢你的时间!
编辑:以下是一个更简单的测试查询,可以使用SUM(hours_used)正常工作。
SELECT
ID AS Employee_Name,
SUM(hours_used) AS Employee_Hours
FROM
TableX
WHERE
Day_Used BETWEEN 04/01/2014 AND 04/30/2014
GROUP BY
ID
我非常感谢您的所有反馈!这是我原来的SQL问题到目前为止的样子。我只需要弄清楚如何按部门将其转换为SUM(hours_used)。 ( IE: Ted会计15小时,公司X 10小时)
SELECT
ID AS Employee_Name,
department AS Employee_Department,
business_unit AS Employee_Business,
SUM(hours_used) AS Employee_Hours
FROM
TableX
WHERE
Day_Used BETWEEN '04/01/2014' AND '04/30/2014'
GROUP BY
ID, department, business_unit, hours_used
Pecci无意中解决了我的最后一个问题!我只需删除GROUP BY中的hours_used,并显示所有内容!我非常感谢所有帮助解决问题的人,非常感谢!!!
答案 0 :(得分:1)
您没有聚合函数或group by语句中的所有字段。
SELECT
ID AS Employee_Name,
department AS Employee_Department,
business_unit AS Employee_Business,
SUM(hours_used) Employee_Hours
FROM
TableX
WHERE
Day_Used BETWEEN '04/01/2014' AND '04/30/2014'
GROUP BY
ID,department,business_unit
将其他列添加为聚合(SUM, COUNT, ETC)或GROUP BY的原因是因为数据的查看方式。
说你有下表
ID intValue Color
1 1 Blue
2 2 Blue
3 5 Green
4 10 Red
5 15 Red
6 5 Blue
我希望按颜色获得所有intValue
的总和。
我想首先确保选择两列SELECT intValue, Color FROM table1
现在,既然我想要intValue的总和,我会添加聚合函数
SELECT SUM(intValue), Color FROM table1
现在,您遇到的问题就在这里。没有告诉DBMS您想要分组的内容(本例中的颜色)它还知道怎么回事?通过添加一个组,我告诉它我想要SUM
所有intValue的Color
分组在SELECT SUM(intValue), Color FROM table
。
{{1}}
如果没有在所有列上执行聚合或组,则DBMS不知道如何处理查询。
答案 1 :(得分:0)
当您使用SUM,COUNT ...时,您需要将所有其他列放在组中。 另一件要看的是日期是如何存储在数据库中的,以及你是否正确使用了这些日期。
答案 2 :(得分:0)
主要问题是日期常数:
SELECT ID AS Employee_Name,
department AS Employee_Department,
business_unit AS Employee_Business,
SUM(hours_used) as Employee_Hours
FROM TableX
WHERE Day_Used BETWEEN '2014-04-01' AND '2014-04-30'
GROUP BY id, department, business_unit;
大多数数据库都会识别日期常量的ISO标准YYYY-MM-DD格式。您的特定数据库可能有另一种首选格式,但常量值确实需要在单引号之间。