sql - 是否有任何最佳方法来查找行数
问题描述
我写了一个 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
解决方案
从原始查询中选择与您的组值的单个值的最缩写版本不同的计数:
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%'
推荐阅读
- powershell - PowerShell 抛出错误说 Click() 不存在
- python - 从矩阵中检索特定值
- r - map() 可以接受具有多个输入的函数吗?
- python - 如何将 TF-IDF 分数组合成相当于连接两个字符串
- scala - 如何将任意函数的 HList 应用于任意值?
- java - 为什么在运行 jar 时出现“驱动程序无法与 SQL Server 建立安全连接”,但在 maven 中运行项目时却没有?
- javascript - 如何计算字体大小以适应容器?
- ansible - 是否有一个模块来组装配置文件,支持 Jinja2 模板,并在删除源模板时删除条目?
- javascript - 如何将 JavaScript 变量的内容插入到 html 中的特定位置?
- python - 使用 mmap 对象写入物理地址