Я новичок в SQL и пытаюсь получить счет для вычисляемого поля. Обычно я использую GUI для его построения, но, поскольку я изучаю синтаксис, иногда кажется, что легче извлечь и обновить вручную. Поставлен вопрос о том, как получить счет для этого вычисляемого поля. Нужно получить общее количество по названию инструмента, а затем сгруппировать его по дате. Для этого сценария у нас есть около 20 инструментов, и мы хотели бы видеть, сколько событий в день на инструмент получает система.
Вот запрос, который выполняется.
SELECT DISTINCT
COUNT(DISTINCT("REPORTER_D"."MC_TOOL")) AS "TOOL COUNT",
"REPORTER_D"."MC_TOOL",
CASE
WHEN "REPORTER_D"."MC_TOOL" LIKE 'ALARM%' THEN 'PATROL'
WHEN "REPORTER_D"."MC_TOOL" LIKE 'DELL_EMC%' THEN 'DELL_EMC'
WHEN "REPORTER_D"."MC_TOOL" LIKE 'Eye of the Storm%' THEN 'ENTUITY'
WHEN "REPORTER_D"."MC_TOOL" LIKE 'NECTAR%' THEN 'NECTAR'
WHEN "REPORTER_D"."MC_TOOL" LIKE 'NINTEX%' THEN 'NINTEX'
WHEN "REPORTER_D"."MC_TOOL" LIKE 'oci_%' THEN 'OCI'
WHEN "REPORTER_D"."MC_TOOL" LIKE 'OEM%' THEN 'OEM'
WHEN "REPORTER_D"."MC_TOOL" LIKE 'OPSMVS%' THEN 'OPSMVS'
WHEN "REPORTER_D"."MC_TOOL" LIKE 'PROXY_CONVERGED_%' THEN 'PROXY_CONVERGED'
WHEN "REPORTER_D"."MC_TOOL" LIKE 'SCOM%' THEN 'SCOM'
ELSE "REPORTER_D"."MC_TOOL"
END AS "TOOL",
"INFO_F"."DATE_RECEPTION",
"INFO_F"."DATE_RECEPTION",
"D"."REPEAT_COUNT",
"D"."ITSM_INCIDENT_ID",
"D"."MC_OWNER",
"D"."MSG",
"D"."MC_HOST",
"Custom Event Slots"."_GROUP"
FROM "SLOTS_O"
INNER JOIN "D"
ON (
"SLOTS_O"."SERVER_ID" = "D"."BPPM_SERVER_ID"
AND "SLOTS_O"."MC_UEID" = "D"."MC_UEID"
)
INNER JOIN (
select
a.mc_ueid,
a.bppm_server_id,
a.slot_name as cust_pid_slotname,
a.slot_value as cust_pid,
b.slot_name as assigned_group_slotname,
b.slot_value as assigned_group,
c.slot_name as cust_assignmentkey_slotname,
c.slot_value as cust_assignmentkey,
d.slot_name as cust_slotname,
d.slot_value as cust_mnemonic,
e.slot_name as cust_type_slotname,
e.slot_value as cust_type,
f.slot_name as cust_ci_slotname,
f.slot_value as cust_ci
from
event_extended_slots_o a,
event_extended_slots_o b,
event_extended_slots_o c,
event_extended_slots_o d,
event_extended_slots_o e,
event_extended_slots_o f
where (
a.mc_ueid=b.mc_ueid and
a.mc_ueid=c.mc_ueid and
a.mc_ueid=d.mc_ueid and
a.mc_ueid=e.mc_ueid and
a.mc_ueid=f.mc_ueid and
a.slot_name='cust_pid' and
b.slot_name='assigned_group' and
c.slot_name='cust_assignmentkey' and
d.slot_name='cust_mnemonic' and
e.slot_name='cust_type' and
f.slot_name='cust_ci'
)
) "Custom Event Slots"
ON (
"Custom Event Slots"."MC_UEID" = "SLOTS_O"."MC_UEID"
)
INNER JOIN "INFO_F"
ON (
"D"."MC_UEID" = "INFO_F"."MC_UEID"
AND "D"."BPPM_SERVER_ID" = "INFO_F"."BPPM_SERVER_ID"
)
INNER JOIN "CLASS_D"
ON (
"INFO_F"."BPPM_SERVER_ID" = "CLASS_D"."BPPM_SERVER_ID"
AND "INFO_F"."EVENT_CLASS_KEY" = "CLASS_D"."EVENT_CLASS_KEY"
)
LEFT OUTER JOIN "REPORTER_D"
ON (
"INFO_F"."BPPM_SERVER_ID" = "REPORTER_D"."BPPM_SERVER_ID"
AND "INFO_F"."TOOL_KEY" = "REPORTER_D"."TOOL_KEY"
)
WHERE (
"INFO_F"."DATE_RECEPTION" >= trunc(sysdate)-7 AND
(
"REPORTER_D"."MC_TOOL" LIKE 'ALARM%' OR
"REPORTER_D"."MC_TOOL" LIKE 'DELL_EMC%' OR
"REPORTER_D"."MC_TOOL" LIKE 'Eye of the Storm%' OR
"REPORTER_D"."MC_TOOL" LIKE 'NECTAR%' OR
"REPORTER_D"."MC_TOOL" LIKE 'NINTEX%' OR
"REPORTER_D"."MC_TOOL" LIKE 'oci_%' OR
"REPORTER_D"."MC_TOOL" LIKE 'OEM%' OR
"REPORTER_D"."MC_TOOL" LIKE 'OPSMVS%' OR
"REPORTER_D"."MC_TOOL" LIKE 'PROXY_CONVERGED_%' OR
"REPORTER_D"."MC_TOOL" LIKE 'SCOM%' OR
)
)
GROUP BY
"D"."REPEAT_COUNT",
"REPORTER_D"."MC_TOOL",
"REPORTER_D"."MC_TOOL",
"D"."ITSM_INCIDENT_ID",
"INFO_F"."DATE_RECEPTION",
"D"."MC_OWNER",
"D"."MC_HOST",
"Custom Event Slots"."BMCPS_ASSIGNED_GROUP",
"D"."MSG"
ORDER BY
COUNT(DISTINCT("REPORTER_D"."MC_TOOL")) DESC
I Я испробовал несколько вариантов подсчета, и это не дает мне того, что мне нужно, поэтому посмотрим, возможно ли это, и если да, то каков правильный синтаксис.