我试图按季度显示以下信息:
到目前为止,所有人都提出了这个问题:
SELECT CASE
WHEN Start_Date >= '01-JAN-14' AND Start_Date <= '31-MAR-14' THEN 'Q1'
WHEN Start_Date >= '01-APR-14' AND Start_Date <= '30-JUN-14' THEN 'Q2'
WHEN Start_Date >= '01-JUL-14' AND Start_Date <= '30-SEP-14' THEN 'Q3'
WHEN Start_Date >= '01-OCT-14' AND Start_Date <= '31-DEC-14' THEN 'Q4'
END AS "Quarter",
COUNT(Proj_Number) Num, SUM(COUNT(Emp_Num)),AVG(Hours_Used)
FROM Project JOIN Assignment USING (Proj_Number) JOIN Employee USING (Emp_Num)
WHERE Start_Date >= '01-JAN-14' AND Start_Date <= '31-DEC-14'
GROUP BY Start_Date,Emp_Num;
答案 0 :(得分:2)
我认为使用to_char(xxx, 'Q')
来获取季度要容易得多:
SELECT TO_CHAR(Start_Date, 'Q') AS "Quarter",
COUNT(Proj_Number) as Num, COUNT(Emp_Num), AVG(Hours_Used)
FROM Project JOIN
Assignment
USING (Proj_Number) JOIN
Employee
USING (Emp_Num)
WHERE Start_Date >= DATE '2014-01-01' AND Start_Date <= DATE '2014-12-31'
GROUP BY TO_CHAR(Start_Date, 'Q');
答案 1 :(得分:1)
您应该按季度对从事这些项目的项目和企业的数量进行分组:
SELECT CASE
WHEN Start_Date >= '01-JAN-14' AND Start_Date <= '31-MAR-14' THEN 'Q1'
WHEN Start_Date >= '01-APR-14' AND Start_Date <= '30-JUN-14' THEN 'Q2'
WHEN Start_Date >= '01-JUL-14' AND Start_Date <= '30-SEP-14' THEN 'Q3'
WHEN Start_Date >= '01-OCT-14' AND Start_Date <= '31-DEC-14' THEN 'Q4'
END AS "Quarter",
COUNT(Proj_Number) Num, COUNT(Emp_Num) emp_count
FROM Project JOIN Assignment USING (Proj_Number) JOIN Employee USING (Emp_Num)
WHERE Start_Date >= '01-JAN-14' AND Start_Date <= '31-DEC-14'
GROUP BY "Quarter";
您应该对每个项目花费的小时数有不同的查询
SELECT CASE
WHEN Start_Date >= '01-JAN-14' AND Start_Date <= '31-MAR-14' THEN 'Q1'
WHEN Start_Date >= '01-APR-14' AND Start_Date <= '30-JUN-14' THEN 'Q2'
WHEN Start_Date >= '01-JUL-14' AND Start_Date <= '30-SEP-14' THEN 'Q3'
WHEN Start_Date >= '01-OCT-14' AND Start_Date <= '31-DEC-14' THEN 'Q4'
END AS "Quarter",
Proj_Number ,AVG(Hours_Used) hours_spent
FROM Project JOIN Assignment USING (Proj_Number) JOIN Employee USING (Emp_Num)
WHERE Start_Date >= '01-JAN-14' AND Start_Date <= '31-DEC-14'
GROUP BY "Quarter" ,Proj_Number;
您可能希望加入它们以查看一个查询中的所有信息
SELECT quarter.Quarter,quarter.Num as proj_count, quarter.emp_count,
proj.Proj_Number, proj.hours_spent
FROM (SELECT CASE
WHEN Start_Date >= '01-JAN-14' AND Start_Date <= '31-MAR-14' THEN 'Q1'
WHEN Start_Date >= '01-APR-14' AND Start_Date <= '30-JUN-14' THEN 'Q2'
WHEN Start_Date >= '01-JUL-14' AND Start_Date <= '30-SEP-14' THEN 'Q3'
WHEN Start_Date >= '01-OCT-14' AND Start_Date <= '31-DEC-14' THEN 'Q4'
END AS "Quarter",
COUNT(Proj_Number) Num, COUNT(Emp_Num) emp_count
FROM Project JOIN Assignment USING (Proj_Number) JOIN Employee USING (Emp_Num)
WHERE Start_Date >= '01-JAN-14' AND Start_Date <= '31-DEC-14'
GROUP BY "Quarter") quarter,
(SELECT CASE
WHEN Start_Date >= '01-JAN-14' AND Start_Date <= '31-MAR-14' THEN 'Q1'
WHEN Start_Date >= '01-APR-14' AND Start_Date <= '30-JUN-14' THEN 'Q2'
WHEN Start_Date >= '01-JUL-14' AND Start_Date <= '30-SEP-14' THEN 'Q3'
WHEN Start_Date >= '01-OCT-14' AND Start_Date <= '31-DEC-14' THEN 'Q4'
END AS "Quarter",
Proj_Number ,AVG(Hours_Used) hours_spent
FROM Project JOIN Assignment USING (Proj_Number) JOIN Employee USING (Emp_Num)
WHERE Start_Date >= '01-JAN-14' AND Start_Date <= '31-DEC-14'
GROUP BY "Quarter" ,Proj_Number) proj
WHERE quarter.Quarter = proj.Quarter