【问题标题】:Is there any optimal way to find the count of rows是否有任何最佳方法来查找行数
【发布时间】:2018-08-25 05:53:19
【问题描述】:

我写了一个 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

【问题讨论】:

  • 我知道可能已经有答案了,但我也很好奇。
  • “更精确”是什么意思?
  • @Sticky 精确表示“特定”、“正确”、“准确”、“无错误”、“精确”、“特别”、“严格”、“严格”等等,如果你想要更多细节然后谷歌它
  • @user9634982:嗯,是的,我知道这个词的意思,非常感谢。但我不知道离散的有限(多)集的基数如何或多或少精确。除非它是某种估计,否则它要么正确,要么不正确。有了你所拥有的,你就会得到正确和准确的答案,所以没有“更精确”。

标签: sql oracle-sqldeveloper


【解决方案1】:

从原始查询中选择与您的组值的单个值的最缩写版本不同的计数:

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%'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-16
    • 2013-06-28
    • 1970-01-01
    • 2011-01-04
    • 2019-10-09
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    相关资源
    最近更新 更多