Краткий обзор - мне нужно найти показатели завершения дел, проходящих через нашу лабораторию, сгруппированные по типу дел и месяцам.До сих пор я придумал это:
SELECT BPI.TYPE,
EXTRACT(MONTH FROM CS.RECEIVED_DATE) MONTH,
COUNT(*) termed_cases
FROM CELL_SOURCE cs
JOIN BASIC_PATHOLOGY_INFO bpi ON CS.CELL_SOURCE_ID = BPI.CELL_SOURCE_ID
JOIN RECENT_CELL_SOURCE_STATUS rcss ON CS.CELL_SOURCE_ID = RCSS.CELL_SOURCE_ID
WHERE type IS NOT NULL
AND CS.RECEIVED_DATE > to_date('03/01/2011', 'MM/DD/YYYY/')
AND RCSS.STATUS like 'Term%'
GROUP BY BPI.TYPE, EXTRACT(MONTH FROM CS.RECEIVED_DATE)
ORDER BY month, type
Это находит все случаи, которые были названы, достаточно легко.Однако, когда я хочу узнать цену, у меня возникает небольшая проблема.Я попытался использовать подзапрос, чтобы поймать общее количество случаев по типу независимо от его статуса, например:
COUNT(*)/(SELECT COUNT(*)
FROM CELL_SOURCE cs_1
JOIN BASIC_PATHOLOGY_INFO bpi_1 ON CS_1.CELL_SOURCE_ID = BPI_1.CELL_SOURCE_ID
WHERE BPI_1.TYPE = BPI.TYPE
AND EXTRACT(month from CS_1.RECEIVED_DATE) = EXTRACT(MONTH FROM CS.RECEIVED_DATE)) termed_cases
Однако, это выдает ошибку ORA-00979: not a GROUP BY expression
и выделяет BPI.TYPE
изподзапрос.
Кто-нибудь имеет какие-либо идеи, что моя ошибка может быть на самом деле?Кроме того, аналитическая функция будет работать здесь лучше, чем агрегатная функция?