有没有办法每月显示记录?

时间:2020-08-17 02:57:25

标签: sql oracle oracle-sqldeveloper

所以..我试图按月显示记录。

例如,

x=[]
y1=[]
r1=len(df)
L1=len(df.columns)

for i in range(r1):
    ll=(df.loc[i,'LL'])
    ul=(df.loc[i,'UL'])
    count1 =0
    for j in range(5,L1):
        if isinstance(df.iloc[i,j],str):
            df.loc[i,j]=0
        
        if ll<=df.iloc[i,j]<=ul:
            count1=count1+1
    if count1==(L1-5):
        x.append('Pass')
    else:
        x.append('Fail')
    y1.append(count1)  
    
se = pd.Series(x)
se1=pd.Series(y1)
df['Min']=min1.values
df['Mean']=mean1.values
df['Median']=median1.values
df['Max']=max1.values
df['Pass Count']=se1.values

df['Result']=se.values

min1 = df.iloc[:,5:].min(axis=1)

mean1=df.iloc[:,5:].astype(float).mean(axis=1,skipna = True)
median1=df.iloc[:,5:].astype(float).median(axis=1,skipna = True)

max1=df.iloc[:,5:].max(axis=1)
count1=df.iloc[:,5:].count(axis=1)


yield1=[]
for i in range(len(se1)):
    yd1=(se1[i]/(L1-3))*100
    yield1.append(yd1)
    
se2=pd.Series(yield1)  
df['Yield']=se2.values
df1=df.loc[:,['PARAMETER','Min','Mean','Median','Max','Result','Pass Count','Yield']]
df1

这将显示这些日期范围之间的x计数,但是如果我将其显示为2列,例如第一列显示月份,第二列显示X并逐月显示。因此结果将如下所示。这在sql中可行吗?

    select X, Y, Z, (X + Y + Z) as total
from (
  select
    (select count(x) from table1 a, table2 b where date between '2020-01-01' and '2020-05-01') as X,
    (select count(y) from table3 a, table4 b where date between '2020-01-01' and '2020-05-01') as Y,
    (select count(z) from table5 a, table6 b where date between '2020-01-01' and '2020-05-01') as Z
  from dual
);

4 个答案:

答案 0 :(得分:1)

如果您希望能够按月按时间顺序排序,并且假设pdate是实际的日期数据类型,则需要按顺序将其以数字格式包括在内。像这样:

   select to_char(pdate,'Month') month, 
          count(*)
     from TableA
    where pdate between to_date('2019-01-01','YYYY-MM-DD') 
                    and to_date('2020-08-31','YYYY-MM-DD')
 group by to_char(pdate,'Month')
 order by to_char(pdate,'MM');

答案 1 :(得分:0)

您只需要按月分组

Request body exceeded settings.DATA_UPLOAD_MAX_MEMORY_SIZE.
Bad Request: /api/upload-lecture/
[17/Aug/2020 04:56:44] "POST /api/upload-lecture/ HTTP/1.1" 400 128016

答案 2 :(得分:0)

Select
To_char(trunc(pdate, 'mm' ), 'month' ), count(X)
From TableA
Group by trunc(pdate, 'mm' ) 
Order by trunc(pdate, 'mm' )

答案 3 :(得分:0)

将日期转换为必需的显示格式“月”,但按日期排序

我假设您不在乎与记录关联的年份,所以我将日期转换为与记录的月份关联的字符串。

接下来,我按记录的月份进行汇总,并通过将记录的月份转换回日期的方式进行排序,如下所示:

--sample data---------------       
WITH smple ( record_month ) AS (
    SELECT
        to_char(last_ddl_time, 'Month') record_month
    FROM
        all_objects
)
--end sample data-----------  
SELECT
    record_month,
    COUNT(1)
FROM
    smple
GROUP BY
    record_month
ORDER BY
    to_date(record_month || '-01-2020', 'MONTH-DD-YYYY') ASC;