求助: 面对 千万级别的数据 进行统计,谁有解决方案?
过程:一个表,表有70列,3千万行, 先用where筛选 可能 还有 5个左右like查询,group by 三个列,得到新的table,再对这个table 进行至少2层嵌套的sum,count等.求答案.先谢谢了.
1)原表3千万行, where筛选出来的就有500万行~800W.再对这个结果进行至少2次嵌套统计,
中间统计我想过了,但因为提交的数据是有范围的,即范围和条件不固定.无规律可找,所以没法提前处理数据,只有等客户提交条件后才能方向统计
2)下面是一条sql
exec('
SELECT
CASE WHEN 参与评价处方数 IS NULL THEN 0
Case这里省略10个Case
into ['+@OldTable+']
from
(
SELECT
COUNT(1) as 参与评价处方数,
SUM(YPZS) as 用药品种总数,
这里省掉10个以上sum
SUM(JZKJYCFCS) AS 急诊患者抗菌药处方数
FROM(
SELECT
VISIT_DATE AS CFRQ, PATIENT_ID AS BRBS, ORDERED_BY AS KSDM,
COUNT(1) YPZS,
SUM(CASE WHEN DNDCID IS NOT NULL THEN 1 ELSE 0 END) AS TYMCS,
下面省掉10个以上sum
AS JZKJYCFCS
FROM
{0}
GROUP BY VISIT_DATE, PATIENT_ID, ORDERED_BY
Having 1=1 {1}
)
AS TEMP
) as A
CREATE TABLE ['+@Table+']
这里省掉70个列,
下面是建表和索引.针对新查出来的表
UPDATE ['+@Table+']
SET 平均每张处方用药品种数 = case when
下面再省掉所有列的update部分,
下面是 row_number()的分页
3)以上语句大写字母是列的名称或别名,{}里面是传入的其它条件或表名
MM们
慕标琳琳