SQL- Oracle分组结果行

时间:2012-09-18 18:22:12

标签: sql oracle

以下查询:

Select
trunc(create_dtime) as Day,count(create_dtime) as DLs
From Player_Tapjoy
Where
Trunc(Create_Dtime) >= To_Date('2012-sep-01','yyyy-mon-dd')
And Trunc(Create_Dtime) < To_Date('2012-sep-03','yyyy-mon-dd')
Group by trunc(create_dtime)
Union All
Select trunc(create_dtime) as Day,
Count(Create_Dtime) As DLs
From Player_aux_pt
Where
Site = 'AppCircle' And
Trunc(Create_Dtime) >= To_Date('2012-sep-01','yyyy-mon-dd')
And Trunc(Create_Dtime) < To_Date('2012-sep-03','yyyy-mon-dd')
Group By Trunc(Create_Dtime)

给我以下结果:

   Day           DLs
02-Sep-12        6920
01-Sep-12        6630
02-Sep-12        3009
01-Sep-12        3637

如何将这些组合起来,以便每天只有一行,并且订购正确?

2 个答案:

答案 0 :(得分:2)

WITH
PTJ AS
(
    SELECT
      TRUNC(CREATE_DTIME) AS DAY,
      COUNT(CREATE_DTIME) AS DLS
    FROM PLAYER_TAPJOY
    WHERE TRUNC(CREATE_DTIME) >= TO_DATE('2012-sep-01', 'yyyy-mon-dd')
    AND   TRUNC(CREATE_DTIME) < TO_DATE('2012-sep-03', 'yyyy-mon-dd')
    GROUP BY TRUNC(CREATE_DTIME)
),
PAP AS
(
    SELECT
      TRUNC(CREATE_DTIME) AS DAY,
      COUNT(CREATE_DTIME) AS DLS
    FROM PLAYER_AUX_PT
    WHERE SITE = 'AppCircle'
    AND   TRUNC(CREATE_DTIME) >= TO_DATE('2012-sep-01', 'yyyy-mon-dd')
    AND   TRUNC(CREATE_DTIME) < TO_DATE('2012-sep-03', 'yyyy-mon-dd')
    GROUP BY TRUNC(CREATE_DTIME)
)
SELECT
  COALESCE(PTJ.DAY, PAP.DAY) AS DAY,
  PTJ.DLS AS PTJ_DLS,
  PAP.DLS AS PAP_DLS,
  COALESCE(PTJ.DLS, 0) + COALESCE(PAP.DLS, 0) TOTAL_DLS
FROM PTJ
FULL OUTER JOIN PAP
ON PTJ.DAY = PAP.DAY
ORDER BY COALESCE(PTJ.DAY, PAP.DAY)

答案 1 :(得分:0)

select day,sum(DLs) as Tot_DLs
From
(
Select
 trunc(create_dtime) as Day,count(create_dtime) as DLs
  From Player_Tapjoy
 Where
 Trunc(Create_Dtime) >= To_Date('2012-sep-01','yyyy-mon-dd')
   And Trunc(Create_Dtime) < To_Date('2012-sep-03','yyyy-mon-dd')
   Group by trunc(create_dtime)
  Union All
 Select trunc(create_dtime) as Day,
  Count(Create_Dtime) As DLs
  From Player_aux_pt
    Where
  Site = 'AppCircle' And
   Trunc(Create_Dtime) >= To_Date('2012-sep-01','yyyy-mon-dd')
    And Trunc(Create_Dtime) < To_Date('2012-sep-03','yyyy-mon-dd')
   Group By Trunc(Create_Dtime)
    )
   Group By Day
   Order By Day Asc