我有一个简单的查询,按部门统计不同类型的故障单。 有5个部门。查询当前按部门分组。
public void map(LongWritable key, Text value, OutputCollector<Text, Text> output, Reporter reporter) throws IOException {
String line = value.toString();
String [] parts = line.split("\t");
int frequency = Integer.parseInt(parts[1]);
String [] documentDataParts = parts[0].split(",");
String term = documentDataParts[0];
String bookFilename = documentDataParts[1];
String chunk = documentDataParts[2];
String documentData = bookFilename + "," + chunk + "," + frequency;
output.collect(new Text(term), new Text(documentData));
}
我需要做的是对票证进行分组,以便Group1只是&#39;应用程序&#39;而Group2是其他部门。
有没有办法按Ages,LesMiserablesbyVictorHugo.txt,5545 1
Aggeus,LeviathanbyThomasHobbes.txt,1268 1
Aggravateth,LeviathanbyThomasHobbes.txt,995 1
Aggravateth,LeviathanbyThomasHobbes.txt,999 1
Aggravation,LeviathanbyThomasHobbes.txt,1015 1
Aggravation,LeviathanbyThomasHobbes.txt,1691 1
Aggregate,LeviathanbyThomasHobbes.txt,1293 1
Agier,LesMiserablesbyVictorHugo.txt,2790 1
Agincourt,LesMiserablesbyVictorHugo.txt,1510 1
Agn,LesMiserablesbyVictorHugo.txt,5114 1
Agnes,LesMiserablesbyVictorHugo.txt,6450 1
Agnese,LesMiserablesbyVictorHugo.txt,580 1
Agnus,UlyssesbyJamesJoyce.txt,1827 1
定义组?
如果可能,就像这样......
SELECT
Dept_Name, COUNT(vsrv.TicketNbr) AS TotalTicketsSubmitted,
SUM(CASE WHEN vsrv.Closed_Flag = 1 THEN 1 ELSE 0 END) AS TotalTicketsClosed,
SUM(CASE WHEN vsrv.Closed_Flag = 0 THEN 1 ELSE 0 END) AS TotalOpenTickets
FROM
v_rpt_service vsrv
LEFT OUTER JOIN
v_rpt_SurveysByTicket vsrvy ON vsrv.TicketNbr = Vsrvy.SR_Service_RecID
WHERE
Dept_Name IN ('Application', 'Support', 'Service', 'Development', 'IT')
GROUP BY
Dept_Name
答案 0 :(得分:1)
这样的事可能对你有所帮助。我假设struct Y;
struct X {
X(Y&){}
};
struct Y {
Y(X&, int){}
};
int main() {
X x(Y(x, 6));
}
列来自DEPT_NAME
。如果没有将其替换为v_rpt_service
v_rpt_SurveysByTicket
答案 1 :(得分:1)
您可以为此使用分组。这样的事情对你有用。
SELECT CASE WHEN Dept_Name = 'Application' then Dept_Name else 'Group2' end as DepartmentName
, COUNT(vsrv.TicketNbr) AS TotalTicketsSubmitted
, SUM(CASE WHEN vsrv.Closed_Flag = 1 THEN 1 ELSE 0 END) AS TotalTicketsClosed
, SUM(CASE WHEN vsrv.Closed_Flag = 0 THEN 1 ELSE 0 END) AS TotalOpenTickets
FROM v_rpt_service vsrv LEFT OUTER JOIN v_rpt_SurveysByTicket vsrvy ON vsrv.TicketNbr = Vsrvy.SR_Service_RecID
WHERE Dept_Name in ('Application', 'Support', 'Service', 'Development', 'IT')
GROUP BY CASE WHEN Dept_Name = 'Application' then Dept_Name else 'Group2' end