Есть ли оптимальный способ найти количество строк - PullRequest
0 голосов
/ 25 августа 2018

Я написал SQL-запрос, в котором у меня есть один внутренний запрос и один внешний запрос. Мой внешний запрос выдает результат от имени внутреннего запроса, теперь мне нужно найти число строк, возвращаемых моим внешним запросом, и то, что я сделалЯ вложил его в другой оператор select и использую функцию count (), которая выдает результат, но мне нужно знать более точный способ вычисления количества строк, см. Мой запрос ниже и предложите мне лучший способ сделать то же самое.

SELECT count(*) FROM (
SELECT 
COUNT(*) NO_OF_EMP
,SUM(tbl.AMOUNT) TOTAL_AMOUNT
,tbl.YYYYMM
,tbl.DATA_PICKED_BY_NAME
,MIN(DATA_PICKED_DATE) DATA_PICKED_DATE
,ROW_NUMBER() OVER (ORDER BY tbl.REFERENCE_ID) AS ROW_NUM
FROM (
SELECT 
SALARY_REPORT_ID
,EMP_NAME
,EMP_CODE
,PAY_CODE
,PAY_CODE_NAME
,AMOUNT
,PAY_MODE
,PAY_CODE_DESC
,YYYYMM
,REMARK
,EMP_ID
,PRAN_NUMBER
,PF_NUMBER
,PRAN_NO
,ATTOFF_EMPCODE
,DATA_PICKED_DATE
,DATA_PICKED_BY
,DATA_PICKED_BY_NAME
,SUBSTR(REFERENCE_ID,0,3) REFERENCE_ID
FROM SALARY_DETAIL_REPORT_HISTORY
WHERE PAY_CODE=999
AND REFERENCE_ID LIKE '202%'
) tbl
GROUP BY tbl.REFERENCE_ID,tbl.YYYYMM,tbl.DATA_PICKED_BY_NAME
order by tbl.YYYYMM 
)mytbl1

1 Ответ

0 голосов
/ 25 августа 2018

Выберите количество, отличное от самой сокращенной версии одного значения значений вашей группы из исходного запроса:

SELECT count(distinct SUBSTR(REFERENCE_ID,0,3) || YYYYMM || DATA_PICKED_BY_NAME)
FROM SALARY_DETAIL_REPORT_HISTORY
WHERE PAY_CODE=999
AND REFERENCE_ID LIKE '202%'
...