Global Change or filter based on Min and Max dates
Hi Guys,
Hopefully there is a genius out there that is an expert with filters and or global changes, I am after a solution and can’t work out if it is possible to do in P6.
Based on a filter (using codes to select a group of activities) I want to write a value into two date UDF Fields can I:
Run a global change to give the earliest and latest date in the group and write the result to all tasks in the group? or
Is there a mindate maxdate option in Global change or filter? Or
If these tasks were grouped in the activity view can a global change be written to fill down the dates that the summary level is displaying, which are essentially the min and max dates of the groups.
I could do this pretty easily in excel but I have over a 100 projects and doing the import one at a time is not feasible.
I could create LOE’s but as my variables are constantly changing and due to the volume also not an option.
Summary bars are not an option eithers as I am writing the UDF’s to get all the bars I want on one line,
An option for me might be to do it using Legare but I would prefer to see if I can get it done in P6 first.
Cheers
Rob
Yes, you can do it in one report.
I created a sample report from efashion:
Year | Lines | Sales Revenue
2001 | Accessories | $250
2003 | Accessories | $550
2001 | City Skirts | $1050
2003 | City Skirts | $1150...........
Create 2 variables 1) Count and 2) Difference:
1) Count as formula - =Count([Lines]) In Report
2) Difference as formula - =Sum([Sales revenue]) Where (Max([Year]) In Report = [Year]) - Sum([Sales revenue]) Where (Min([Year]) In Report = [Year])
You can replace the formula with your report variables. Then just drag Site ID, Count and Difference variables to your report.
Thanks
Jai
Similar Messages
-
Difference of value of a dimension based on min and max
Database: Oracle 10g
BO-BOXIr3
Let me explain the exact problem again.
As per the below code, I have the data in this format in my table:
Code:
Date Site ID KWH
1/2/2009 00:00 IN-1 22
1/2/2009 01:00 IN-1 28
1/3/2009 03:00 IN-2 25
1/3/2009 04:00 IN-2 46
1/4/2009 00:00 IN-3 28
1/4/2009 10:00 IN-3 34
1/5/2009 08:00 IN-4 31
1/5/2009 09:00 IN-4 55
1/5/2009 11:00 IN-4 77
1/6/2009 00:00 IN-5 34
Now want to build a report with following columns:
Site Count KWH
IN-1 2 6 (ex.-28-22)
IN-2 2 21
IN-3 2 6
IN-4 3 46 (ex.-77-31)
IN-5 2 34
SITE- distinct site name.
COUNT-count is number of repetitions of site id between min and max date.
KWH -(Delta between the min and max date)
To get the above result I have created 3 report from different queries since not able to get these al in a single report viz Count, Max Value and Min value. Well I have all these 3 reports or table on a single page.
Count-this report will give the count between the dates
Max Value-this report will give me the values of kwh for max dates for each site id
Min Value-this report will give me the values of kwh for min dates for each site id
Now want to create a single report based on these 3 reports which contains the column
Site|Count|KWH
IS IT POSSIBLE?
Or
Is it possible to build such report in a single one with all the required column which I mentioned?
The variables which I created to get the max & min dates,
Mx_dt= =Max([Query 2].[Hourly]) In ([Query 2].[SITE_ID])
Mn_dt= =Min([Query 3 (12)].[Hourly]) In ([Query 3 (12)].[SITE_ID])
For filtering on report used following variables:
if_st_mn=If([mn_dt])=[Hourly] Then "ok" Else "no"
if_st_mx =If([mx_dt])=[Hourly] Then "ok" Else "no"
will filter on "ok" to get the max and min date values.
rest of the variable in the snap are not usable.Yes, you can do it in one report.
I created a sample report from efashion:
Year | Lines | Sales Revenue
2001 | Accessories | $250
2003 | Accessories | $550
2001 | City Skirts | $1050
2003 | City Skirts | $1150...........
Create 2 variables 1) Count and 2) Difference:
1) Count as formula - =Count([Lines]) In Report
2) Difference as formula - =Sum([Sales revenue]) Where (Max([Year]) In Report = [Year]) - Sum([Sales revenue]) Where (Min([Year]) In Report = [Year])
You can replace the formula with your report variables. Then just drag Site ID, Count and Difference variables to your report.
Thanks
Jai -
Trying to represent Min and Max date on a rtf. template, please help :-(
Hi all,
I'm a little bit disappointed. I make effort to write questions with the hope someone in this forum can help me, but it seems nobody has interest about it.
I try once again:
I am tryin to represent a From Date and To Date. My XML File looks like:
<ServiceRequest
<Created
08/04/2003 07:34:21</Created
<aENumber
</aENumber
<CheckResultCommentUAW
</CheckResultCommentUAW
<CheckResultCommentUAW
</CheckResultUAW
<ABCCategory
</ABCCategory
<ChargeNumber
</ChargeNumber
<ABCEndDate
</ABCEndDate
<ABCStatus
</ABCStatus
<ABCTransferStatus
</ABCTransferStatus
<ClosedDate
</ClosedDate
<ContactAccountName
FGD Enterprise</ContactAccountName
<ContactCTIFaxInbound
</ContactCTIFaxInbound
<ContactCTIPhoneOutbound
+4904217280677</ContactCTIPhoneOutbound
<ContactDepartment
</ContactDepartment
<ContactEmailAddress
[email protected]</ContactEmailAddress
<ContactFirstName
Kate</ContactFirstName
<ContactLastName
Middleton</ContactLastName
<ContactSalutation
Miss</ContactSalutation
<ContactSubject
Psychoth.</ContactSubject
<ContactTitle
</ContactTitle
<ContactType
Doctor</ContactType
<CreatorFirstName
Iris</CreatorFirstName
<CreatorName
Ramos</CreatorName
<Description
Questions about Suprare.</Description
<JoinedContactAccountId
1-L8-676</JoinedContactAccountId
<PTCNumber
</PTCNumber
<Product
Novasitin</Product
<ProductBusinessUnit
BU Winters</ProductBusinessUnit
<SRNumber
1-1043652</SRNumber
<SRType
Speciality Service Request</SRType
<SolutionDescription
WLvbf</SolutionDescription
<Status
Open</Status
<TemporaryContactName
</TemporaryContactName
<TemporaryPhoneNumber
</TemporaryPhoneNumber
<ABCDateReceived
</ABCDateReceived
<ABCLinkedProductName
Novasitin 1</ABCLinkedProductName
<ABCNoofUnitsReceived
</ABCNoofUnitsReceived
<ABCRefundReplacement
</ABCRefundReplacement
<ABCSampleStatusReceived
</ABCSampleStatusReceived
<ABCSolutionDescription
</ABCSolutionDescription
<VisitCompleteAddress
The Parskinson 3</VisitCompleteAddress
<Login
A456788</Login
<ListOfSRInternalProducts
<SRInternalProducts
<MaterialNumber
134152</MaterialNumber
<ProductName
Novasitin 1</ProductName
<BatchNumber
</BatchNumber
<ReplacementRefnd
</ReplacementRefnd
<SampleAmount
</SampleAmount
<SampleRecievedDate
</SampleRecievedDate
<SampleStatus
</SampleStatus
</SRInternalProducts
<SRInternalProducts
<MaterialNumber
KTA</MaterialNumber
<ProductName
Novasitin</ProductName
<BatchNumber
</BatchNumber
<ReplacementRefnd
</ReplacementRefnd
<SampleAmount
</SampleAmount
<SampleRecievedDate
</SampleRecievedDate
<SampleStatus
</SampleStatus
</SRInternalProducts
</ListOfSRInternalProducts
</ServiceRequest
</listOf_ssServiceRequest
As you see the date has the format 08/04/2003 07:34:21, but I want to represent it like 04.08.2003. I have this on my template:
<?xdoxslt:set_variable($_XDOCTX, ‘minYear’, xdoxslt:to_char(concat(substring(Created, 4,2), ‘.‘,substring(Created, 1, 2), ‘.‘,substring(Created, 7, 4)), ‘DD.MM.YYYY’))?>
<?xdoxslt:set_variable($_XDOCTX, ‘maxYear’, xdoxslt:to_char(concat(substring(Created, 4,2), ‘.‘,substring(Created, 1, 2), ‘.‘,substring(Created, 7, 4)), ‘DD.MM.YYYY’))?>
and the loop:
<?for-each:ServiceRequest?>
<?if: xdoxslt:date_diff(‘s’, xdoxslt:get_variable($_XDOCTX, ‘minYear’), xdoxslt:to_char(concat(substring(Created, 4,2), ‘.‘,substring(Created, 1, 2), ‘.‘,substring(Created, 7, 4)), ‘DD.MM.YYYY’), $_XDOLOCALE, $_XDOTIMEZONE) < 0 ?>
<?xdoxslt:set_variable($_XDOCTX, ‘minYear’, xdoxslt:to_char(concat(substring(Created, 4,2), ‘.‘,substring(Created, 1, 2), ‘.‘,substring(Created, 7, 4)), ‘DD.MM.YYYY’))?><?end if?>
<?if: xdoxslt:date_diff(‘s’, xdoxslt:get_variable($_XDOCTX, ‘maxYear’), xdoxslt:to_char(concat(substring(Created, 4,2), ‘.‘,substring(Created, 1, 2), ‘.‘,substring(Created, 7, 4)), ‘DD.MM.YYYY’), $_XDOLOCALE, $_XDOTIMEZONE) > 0?>
<?xdoxslt:set_variable($_XDOCTX, ‘maxYear’, xdoxslt:to_char(concat(substring(Created, 4,2), ‘.‘,substring(Created, 1, 2), ‘.‘,substring(Created, 7, 4)), ‘DD.MM.YYYY’))?><?end if?><?end for-each?>
So it gives me all the Service Request records in the time range. For example From Date: 31.01.2005 til To Date 01.02.2005.
It doesn't give me the To Date result unfortunately, it gives me the correct From Date, but as To Date the result is the same as From Date, what is false.
The results should be:
From Date: 31.01.2005
To Date: 01.02.2005
Can anybody help me? please?
RegardsI can but I was looking for a direct API use if possible here. Our library is so compilcated that I can't use the direct select statement.
Well thanks, I will be using the select max, min and further writing another API for my use.
Regards,
KP -
Transactions between Min and Max dates
Hey all,
I have a requirement to extract data between min(transdate) and max(transdate), i got to do this using a single query, i used two queries, ie. 1 select for selecting the max and min dates and my second query to get the transactions. Can some one give me an idea to solve this, as Max & Min functions are not allowed in the where clause.
Thanks in Advance
- EricWhy single fetch if you want effeciency then use analytic function
SQL> SELECT empno,ename,hiredate FROM
2 (SELECT empno,ename,hiredate,MAX(hiredate) OVER (ORDER BY empno) m,
3 MIN(hiredate) OVER (ORDER BY empno) mi FROM emp)
4 WHERE hiredate BETWEEN mi AND m;The least and greatest function returns the smallest and greatest value in a list of expressions.
The syntax for the least function is:
least( expr1, expr2, ... )
Khurram -
MIN and MAX date for each range
Hi folks,
I´ve got the following problem:
Given a table
create table t as select 'AT' OM_LANDTEXT, '12345' OM,
to_date('01-JAN-2004', 'DD-MON-YYYY') datum from dual
union
select 'AT' OM, '12345' OM_LANDTEXT,
to_date('02-JAN-2004', 'DD-MON-YYYY') datum from dual
union
select 'AT' OM, '12345' OM_LANDTEXT,
to_date('03-JAN-2004', 'DD-MON-YYYY') datum from dual
union
select 'AT' OM, '12345' OM_LANDTEXT,
to_date('05-JAN-2004', 'DD-MON-YYYY') datum from dual
union
select 'AT' OM, '12345' OM_LANDTEXT,
to_date('06-JAN-2004', 'DD-MON-YYYY') datum from dual
union
select 'AT' OM, '12345' OM_LANDTEXT,
to_date('01-FEB-2004', 'DD-MON-YYYY') datum from dual
union
select 'AT' OM, '12345' OM_LANDTEXT,
to_date('02-FEB-2004', 'DD-MON-YYYY') datum from dual
union
select 'AT' OM, '12345' OM_LANDTEXT,
to_date('03-FEB-2004', 'DD-MON-YYYY') datum from dual;
SQL> select * from t;
OM OM DATUM
AT 12345 01-JAN-04
AT 12345 02-JAN-04
AT 12345 03-JAN-04
AT 12345 05-JAN-04
AT 12345 06-JAN-04
AT 12345 01-FEB-04
AT 12345 02-FEB-04
AT 12345 03-FEB-04
8 rows selected.I need to have the first and last date for om and om_landtext for each date range (where "date range" means a set of consecutive dates with no gaps).
So the ouput should be
OM OM_LANDTEXT DATVON DATBIS
AT 12345 01-JAN-04 03-JAN-04
AT 12345 05-JAN-04 06-JAN-04
AT 12345 01-FEB-04 03-FEB-04Any ideas...?
Thanks for your help!
Best regards,
Gerd
Message was edited by: Gerd
Sorry, I forgot to mention this should be done in pure SQL if possible.
[email protected]This is the plodding, methodical approach I've always taken, which leaves me somewhat in awe of Rod West's solution.
SELECT om_landtext,
om,
MIN(datum) AS min_datum,
MAX(datum) AS max_datum
FROM (
SELECT om_landtext,
om,
datum,
prev_datum,
COUNT(
CASE
WHEN prev_datum IS NULL THEN 'x'
WHEN prev_datum != datum-1 THEN 'x'
ELSE NULL
END
) OVER (PARTITION BY om_landtext, om ORDER BY datum) AS grp
FROM (
SELECT om_landtext,
om,
datum,
LAG(datum) OVER (PARTITION BY om_landtext, om ORDER BY datum) AS prev_datum
FROM t
GROUP BY
om_landtext,
om,
grp;null -
Single result recording valuation based on min and max values
hi,
Our client requirement is as follows:
While entering the single results recording the system should not calculate the average , we need the system should valuate based on the Minimum and Maximum values in result entry. Is it possible?. can anyone explain in details.
Regards,
Ramu.Hi
This is a standard SAP functionality available in SAP
As
Variable Inspection by S-Method
If you set this indicator, you define the valuation mode for the variable inspection according to the s-method (ISO 3951).
For a sampling procedure with this valuation mode, valuation occurs using a sampling plan consisting of sample size and k-factor. A quality score is calculated from the measured values of a sample and compared with the k-factor.
Now you want Both limits should come into picture while valuating then Check valuation Rule :31 -Variable insp. s-Method (two limits)
so select the Valuation mode : 310- Variable insp. s-Method (two limits) in sampling procedure.
I hope this will add some value.
Regars
Sujit -
SELECT * FROM (
SELECT 'STOR_A' STORE_NAME ,'BX1' BOX_NO, 'X11' LOC, '01-JAN-2010' MOVE_DT FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX1' , 'X21' , '03-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX1' , 'X13' , '05-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX1' , 'X41' , '07-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX1' , 'X15' , '09-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX2' , 'X31' , '02-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX2' , 'X71' , '04-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX2' , 'X18' , '06-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX3' , 'X91' , '04-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX3' , 'X10' , '05-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX3' , 'X14' , '07-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX3' , 'X51' , '10-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX3' , 'X16' , '12-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_B' ,'BX2' , 'X41' , '09-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_B' ,'BX2' , 'X74' , '11-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_B' ,'BX2' , 'X31' , '12-JAN-2010' FROM DUAL UNION ALL
SELECT 'STOR_B' ,'BX2' , 'X68' , '17-JAN-2010' FROM DUAL
[pre/]
I have the data of the Boxes which came to the store and changed the locations on a date.
how can i select in a single row the as below. Boxwise the date and location on which received in and sent out
[pre]
BOX_NO STORE_NAME IN_LOC IN_DATE OUT_LOC OUT_DATE
BX1 STOR_A X11 01-Jan-10 X15 09-Jan-10
BX2 STOR_A X31 02-Jan-10 X18 06-Jan-10
BX3 STOR_A X91 04-Jan-10 X16 12-Jan-10
BX2 STOR_B X41 09-Jan-10 X68 17-Jan-10
[pre/]
Can someone helpout from the queryusing aggregate keep first/last functions:
with my_tab as (SELECT 'STOR_A' STORE_NAME ,'BX1' BOX_NO, 'X11' LOC, to_date('01-JAN-2010', 'dd-MON-yyyy') MOVE_DT FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX1' , 'X21' , to_date('03-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX1' , 'X13' , to_date('05-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX1' , 'X41' , to_date('07-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX1' , 'X15' , to_date('09-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX2' , 'X31' , to_date('02-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX2' , 'X71' , to_date('04-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX2' , 'X18' , to_date('06-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX3' , 'X91' , to_date('04-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX3' , 'X10' , to_date('05-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX3' , 'X14' , to_date('07-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX3' , 'X51' , to_date('10-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_A' ,'BX3' , 'X16' , to_date('12-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_B' ,'BX2' , 'X41' , to_date('09-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_B' ,'BX2' , 'X74' , to_date('11-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_B' ,'BX2' , 'X31' , to_date('12-JAN-2010', 'dd-MON-yyyy') FROM DUAL UNION ALL
SELECT 'STOR_B' ,'BX2' , 'X68' , to_date('17-JAN-2010', 'dd-MON-yyyy') FROM DUAL)
select box_no,
store_name,
min(loc) keep (dense_rank first order by move_dt) in_loc,
min(move_dt) in_date,
max(loc) keep (dense_rank last order by move_dt) out_loc,
max(move_dt) out_date
from my_tab
group by box_no,
store_name
order by store_name, box_no;
BOX STORE_ IN_ IN_DATE OUT OUT_DATE
BX1 STOR_A X11 01/01/2010 00:00:00 X15 09/01/2010 00:00:00
BX2 STOR_A X31 02/01/2010 00:00:00 X18 06/01/2010 00:00:00
BX3 STOR_A X91 04/01/2010 00:00:00 X16 12/01/2010 00:00:00
BX2 STOR_B X41 09/01/2010 00:00:00 X68 17/01/2010 00:00:00Edited by: Boneist on 29-Jul-2010 14:32
Oh darn it! Too slow! {noformat}*pootles off for more caffeine*{noformat} -
OBIEE- Calculating Min and Max Values
Hi Friends,
I have an Issue with regards to calculating Min/Max Values.
In my Data base we dont have Message Count. So we created a Logical column in BMM Layer called "Message Count" based on the column "Out/In No" i.e by creating count of it i.e (Count(out/in no)) in BMM
To calculate Inbound Messages we writing -- filter(Message count using messagetype ='i') at report level
To calculate Outbound Messages we writing -- filter(Message count using messagetype ='o') at report Level
To calculate Total Messages we writing----- "Message Count".
But Now we had an issue to calculate "Min Inbound/Max Inbound/Min Outbound/Max Outbound/Avg In/Avg Out" types of Messages.
To make it clear definition for MIN and MAx is Like This.
Say Ravi received(Inbound) messages 2
Say Roy received(Inbound) messages 5
Say Kiran received(Inbound) messages 11 on a particular date.
So for that particular date Min Inbound is 2
So for that particular date Max Inbound is 11
and Avg Inbound will be (2+5+11)/3
On this basis we have to implement it in OBIEE. For any more clarifications please reply to my thread.
Please reply to my Issue ASAP as it is critical and I am out of time.
Thanks in Advance.
RegardsHi,
Do you mean to ask minimum stock in a plant and maximum stock in a plant over a period of time?
Due to receipts stocks flows in to the storage location of a plant. May be in one period there will be less stock or in one period there will be maximum stock.
May be history tables like MBEWH or MARDH or the report MC.9 ( you need to provide the period as input) etc for your case.If this is not your requirement please reply back.
Regards -
Avg, Min and Max with a serious twist.....ASO
Hi,
I need to calc the Avg, Min and Max on Revenue. That's simple. However Every row of data the revenue falls into a bucket/range. For example revenue is in buckets '0 to 50' or '51 to 100' or '101 to 150' lets say. As I load data I load a '1' into a 'Count' measure depending on which bucket that row of data falls into. So I can get a total count for each bucket. So '0 to 50' might have a Count of 3. '51 to 100' might also have 3 and '101 to 150' has a 2. So my range count looks like:
0 to 50 - 3
51 to 100 - 3
101 to 150 -2
The trick is they only want the Avg, Min and Max on the rows that makeup the highest 'Count'. In this case that's 3. Problem is there are two ranges that meet this criteria. When that happens they want the Min, Max and Avg of the rows that make up the '51 to 100' bucket since it's the highest range.
I can easily get the '3' by using the Max formula. So I know what the highest bucket is. Problem is I can't figure out for the life of me, how to pass only those rows that make up the '51 to 100' bucket into the Avg, Min and Max function.....
I'm stumped and in dire need of something here. I have a spreadsheet that explains the problem better. If somehow I can get a flag on those rows I can easily Avg, Min and Max it. I just can't seem to figure out how to get a flag on only those rows of data.
I'm willing to share my mocked up example and spreadsheet and .otl and sample data etc....
Please help :)Why does this verify with Min?
Min ( Filter ( CROSSJOIN ( Descendants ( [Service].CurrentMember),
Filter ( CROSSJOIN ( Descendants ( [Segment].CurrentMember),
Filter ( CROSSJOIN ( Leaves ( [Ranges].CurrentMember),
Filter ( CROSSJOIN ( Descendants ( [Customer Type].CurrentMember),
Filter ( CROSSJOIN ( Descendants ( [Zip Code].CurrentMember),
Filter ( CROSSJOIN ( Descendants ( [Disposal Option].CurrentMember),
Filter ( CROSSJOIN ( Descendants ( [Tickets].CurrentMember),
Filter ( CROSSJOIN ( Descendants ( [Yardages].CurrentMember),
Filter ( Descendants ( [Contract Year].CurrentMember),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) ) , [FHRev] )
And when I just change to Tail and put a 1 at the end it fails?
Tail ( Filter ( CROSSJOIN ( Descendants ( [Service].CurrentMember),
Filter ( CROSSJOIN ( Descendants ( [Segment].CurrentMember),
Filter ( CROSSJOIN ( Leaves ( [Ranges].CurrentMember),
Filter ( CROSSJOIN ( Descendants ( [Customer Type].CurrentMember),
Filter ( CROSSJOIN ( Descendants ( [Zip Code].CurrentMember),
Filter ( CROSSJOIN ( Descendants ( [Disposal Option].CurrentMember),
Filter ( CROSSJOIN ( Descendants ( [Tickets].CurrentMember),
Filter ( CROSSJOIN ( Descendants ( [Yardages].CurrentMember),
Filter ( Descendants ( [Contract Year].CurrentMember),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) )),
[High Range Max] = ( [High Range Max] , [All FHRev Ranges] ) ) , 1 ) -
Performance Issue using min() and max() in one SQL statement
I have a simple query that selects min() and max() from one column in a table in one sql statment.
The table has about 9 Million rows and the selected column has a non unique index. The query takes 10 secs. When i select min() and max() in separate statements, each takes only 10 msecs:
This statement takes 10 secs:
select min(date_key) , max(date_key)
from CAPS_KPIC_BG_Fact_0_A
where date_key != TO_DATE(('1900-1-1' ),( 'YYYY-MM-DD'))
This statement takes 10 msecs:
select min(date_key)
from MYTABLE
where date_key != TO_DATE(('1900-1-1' ),( 'YYYY-MM-DD'))
union all
select max(date_key) from MYTABLE
Because the first statement is part of an autmatic generated SQL of an application, i can't change it and i have to optimize the data model. How can i speed up the first statement?I've ran similar query on a table that has 10 milliion rows, with an index on the date column
This is what I have found:
SQL> set timing on
1 SELECT MIN(ID_DATE) MIN_DATE, MAX(ID_DATE) MAX_DATE
2 FROM MY_DATE
3* WHERE ID_DATE != TO_DATE(('1900-1-1' ),( 'YYYY-MM-DD'))
SQL> /
MIN_DATE MAX_DATE
03-APR-76 06-JAN-02
real: 43383
SQL> SELECT MIN(ID_DATE) MIN_DATE FROM MY_DATE
2 WHERE ID_DATE != TO_DATE(('1900-1-1' ),( 'YYYY-MM-DD'))
3 UNION ALL
4 SELECT MAX(ID_DATE) MAX_DATE FROM MY_DATE
5 WHERE ID_DATE != TO_DATE(('1900-1-1' ),( 'YYYY-MM-DD'))
6 /
MIN_DATE
03-APR-76
06-JAN-02
real: 20
SQL> SELECT MIN_DATE, MAX_DATE FROM
2 (SELECT MAX(ID_DATE) MAX_DATE FROM MY_DATE
3 WHERE ID_DATE != TO_DATE(('1900-1-1' ),( 'YYYY-MM-DD')) ) A,
4 (SELECT MIN(ID_DATE) MIN_DATE FROM MY_DATE
5 WHERE ID_DATE != TO_DATE(('1900-1-1' ),( 'YYYY-MM-DD')) ) B
6 /
MIN_DATE MAX_DATE
03-APR-76 06-JAN-02
real: 10
SQL> My conculsion, there is nothing you can do to the tables that will improve that particular statement.
Why can't you modify the application? -
Highlighting Min and Max Values on each line
Hello,
Is it possible to highlight the Min and Max values on each row of a Query. For example I have sales below by product line for the last seven quarters. The user
would like the Max value (150) for Product Line ABC Highlighted as Green and the Min value (1055) color coded as Red. Like wise for each line - DEF 200 as green and 100 as red and GHI - 400 as green and 100 as red.
FYQ Q207 Q307 Q407 Q108 Q208 Q308 Q408
ABC 1500 1200 1400 1050 1100 1100 1100
DEF 1550 1000 1560 1220 1340 1640 2000
GHI 1000 2000 3000 4000 3250 2220 3750
Is this possible using Exceptions? or may be any other means? We are on Bex 7.0
Best Regards,
SanjivHello Sanjiv,
I think it can be done by JavaScript, but needs more effort
[Use of JavaScript Functions|http://help.sap.com/saphelp_nw04/helpdata/en/d9/4a853bc623c075e10000000a114084/content.htm]
Try the exception available in the BW[BW Stylesheets|http://help.sap.com/saphelp_nw04/helpdata/en/3f/ca453afbf37b54e10000000a11402f/content.htm]
SAPBEXformats - Formatting cell (scaling factors)
SAPBEXexcGood1 - Exception with priority good 1
SAPBEXexcGood2 - Exception with priority good 2
SAPBEXexcGood3 - Exception with priority good 3
SAPBEXexcCritical4 - Exception with priority critical 4
SAPBEXexcCritical5 - Exception with priority critical 5
SAPBEXexcCritical6 - Exception with priority critical 6
SAPBEXexcBad7 - Exception with priority bad 7
SAPBEXexcBad8 - Exception with priority bad 8
SAPBEXexcBad9 - Exception with priority bad 9
See this thread,
Change the colour of a cell text depending on the value Web Reports (NW04s)
Thanks
Chandran
Edited by: Chandran Ganesan on Mar 19, 2008 4:27 PM -
Select just the values between min and max of an accumulated value over day
Hello Forum,
a value is accumulated over a day and over a period of time. Next day the value is reseted and starts again to be accumulated:
with sampledata as (select to_date('09.09.2012 00:04:08', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('09.09.2012 01:03:08', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('09.09.2012 02:54:11', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('09.09.2012 03:04:08', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('09.09.2012 04:04:19', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('09.09.2012 05:04:20', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('09.09.2012 06:12:02', 'dd.mm.yyyy hh24:mi:ss') ts, 23 val from dual union all
select to_date('09.09.2012 07:12:03', 'dd.mm.yyyy hh24:mi:ss') ts, 29 val from dual union all
select to_date('09.09.2012 08:12:04', 'dd.mm.yyyy hh24:mi:ss') ts, 30 val from dual union all
select to_date('09.09.2012 09:12:11', 'dd.mm.yyyy hh24:mi:ss') ts, 45 val from dual union all
select to_date('09.09.2012 10:12:12', 'dd.mm.yyyy hh24:mi:ss') ts, 60 val from dual union all
select to_date('09.09.2012 11:12:13', 'dd.mm.yyyy hh24:mi:ss') ts, 75 val from dual union all
select to_date('09.09.2012 12:21:24', 'dd.mm.yyyy hh24:mi:ss') ts, 95 val from dual union all
select to_date('09.09.2012 13:21:26', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('09.09.2012 14:21:27', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('09.09.2012 15:21:30', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('09.09.2012 16:21:32', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('09.09.2012 17:21:33', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('09.09.2012 21:21:33', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('09.09.2012 23:21:33', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 00:04:08', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 01:03:08', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 02:54:11', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 03:04:08', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 04:04:19', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 05:04:20', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 06:12:02', 'dd.mm.yyyy hh24:mi:ss') ts, 14 val from dual union all
select to_date('10.09.2012 07:12:03', 'dd.mm.yyyy hh24:mi:ss') ts, 34 val from dual union all
select to_date('10.09.2012 08:12:04', 'dd.mm.yyyy hh24:mi:ss') ts, 58 val from dual union all
select to_date('10.09.2012 09:12:11', 'dd.mm.yyyy hh24:mi:ss') ts, 70 val from dual union all
select to_date('10.09.2012 10:12:12', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('10.09.2012 11:12:13', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 12:21:24', 'dd.mm.yyyy hh24:mi:ss') ts, 153 val from dual union all
select to_date('10.09.2012 13:21:26', 'dd.mm.yyyy hh24:mi:ss') ts, 153 val from dual union all
select to_date('10.09.2012 14:21:27', 'dd.mm.yyyy hh24:mi:ss') ts, 153 val from dual union all
select to_date('10.09.2012 15:21:30', 'dd.mm.yyyy hh24:mi:ss') ts, 153 val from dual union all
select to_date('10.09.2012 16:21:32', 'dd.mm.yyyy hh24:mi:ss') ts, 153 val from dual union all
select to_date('10.09.2012 21:21:33', 'dd.mm.yyyy hh24:mi:ss') ts, 153 val from dual)
select ts, val
from sampledata
order by ts asc;How should I change the select statement to skip all data sets before the first minimum and the duplicates after the maximum of a day in order to get such a result:
TS VAL
09.09.12 06:12 23
09.09.12 07:12 29
09.09.12 08:12 30
09.09.12 09:12 45
09.09.12 10:12 60
09.09.12 11:12 75
09.09.12 12:21 95
09.09.12 13:21 120
09.09.12 14:21 142
10.09.12 06:12 14
10.09.12 07:12 34
10.09.12 08:12 58
10.09.12 09:12 70
10.09.12 10:12 120
10.09.12 11:12 142
10.09.12 12:21 153Thank youThis solution works perfectly when the accumulated value has its low and its high on the same day. But I found out :( , that there is also data, which has its low yesterday and its high today. For a better understandig of the case, there is a machine, wich is working over 3 Shifts with irregular start and end time. For example Shift1 cann start at 5:50 or at 7:15. The accumulated value of the worked time is accumuated for each shift extra. This solution works for the shift 1 (approximate between 06:00-14:00) and for the shift 2(approximate between 14:00-22:00), because there is the low and the high of the accumulated value on the same day. This solution does not work for the shif 3(approximate between 22:00-06:00), because the high of the accumulated value is or can be the next day.
So the thread title should be: "Select just the values between min and max of an accumulated value over the same day(today) or over two successive days (yesterday and today)
Sampledata for shift 1 or shift 2:
{code}
with sampledata as (select to_date('09.09.2012 00:04:08', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('09.09.2012 01:03:08', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('09.09.2012 02:54:11', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('09.09.2012 03:04:08', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('09.09.2012 04:04:19', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('09.09.2012 05:04:20', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('09.09.2012 06:12:02', 'dd.mm.yyyy hh24:mi:ss') ts, 23 val from dual union all
select to_date('09.09.2012 07:12:03', 'dd.mm.yyyy hh24:mi:ss') ts, 29 val from dual union all
select to_date('09.09.2012 08:12:04', 'dd.mm.yyyy hh24:mi:ss') ts, 30 val from dual union all
select to_date('09.09.2012 09:12:11', 'dd.mm.yyyy hh24:mi:ss') ts, 45 val from dual union all
select to_date('09.09.2012 10:12:12', 'dd.mm.yyyy hh24:mi:ss') ts, 60 val from dual union all
select to_date('09.09.2012 11:12:13', 'dd.mm.yyyy hh24:mi:ss') ts, 75 val from dual union all
select to_date('09.09.2012 12:21:24', 'dd.mm.yyyy hh24:mi:ss') ts, 95 val from dual union all
select to_date('09.09.2012 13:21:26', 'dd.mm.yyyy hh24:mi:ss') ts, 120 val from dual union all
select to_date('09.09.2012 14:21:27', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('09.09.2012 15:21:30', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('09.09.2012 16:21:32', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('09.09.2012 17:21:33', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('09.09.2012 21:21:33', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('09.09.2012 23:21:33', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 00:04:08', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 01:03:08', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 02:54:11', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 03:04:08', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 04:04:19', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 05:04:20', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 06:12:02', 'dd.mm.yyyy hh24:mi:ss') ts, 143 val from dual union all
select to_date('10.09.2012 07:12:03', 'dd.mm.yyyy hh24:mi:ss') ts, 144 val from dual union all
select to_date('10.09.2012 08:12:04', 'dd.mm.yyyy hh24:mi:ss') ts, 145 val from dual union all
select to_date('10.09.2012 09:12:11', 'dd.mm.yyyy hh24:mi:ss') ts, 146 val from dual union all
select to_date('10.09.2012 10:12:12', 'dd.mm.yyyy hh24:mi:ss') ts, 147 val from dual union all
select to_date('10.09.2012 11:12:13', 'dd.mm.yyyy hh24:mi:ss') ts, 148 val from dual union all
select to_date('10.09.2012 12:21:24', 'dd.mm.yyyy hh24:mi:ss') ts, 153 val from dual union all
select to_date('10.09.2012 13:21:26', 'dd.mm.yyyy hh24:mi:ss') ts, 153 val from dual union all
select to_date('10.09.2012 14:21:27', 'dd.mm.yyyy hh24:mi:ss') ts, 153 val from dual union all
select to_date('10.09.2012 15:21:30', 'dd.mm.yyyy hh24:mi:ss') ts, 153 val from dual union all
select to_date('10.09.2012 16:21:32', 'dd.mm.yyyy hh24:mi:ss') ts, 153 val from dual union all
select to_date('10.09.2012 21:21:33', 'dd.mm.yyyy hh24:mi:ss') ts, 153 val from dual)
, got_analytics AS
SELECT ts, val
, MIN (val) OVER ( PARTITION BY TRUNC (ts)
ORDER BY ts DESC
) AS min_val_after
, CASE
WHEN ROW_NUMBER () OVER ( PARTITION BY TRUNC (ts)
ORDER BY val
, ts
) = 1
THEN -1 -- Impossibly low val
ELSE LAG (val) OVER ( PARTITION BY TRUNC (ts)
ORDER BY ts
END AS prev_val
, MIN (val) OVER (PARTITION BY TRUNC (ts))
AS low_val_today
, NVL ( LAST_VALUE (val) OVER ( ORDER BY ts
RANGE BETWEEN UNBOUNDED PRECEDING
AND ts - TRUNC (ts) PRECEDING
, -1
) AS last_val_yesterday
FROM sampledata
SELECT ts
, val
FROM got_analytics
WHERE val <= min_val_after
AND val > prev_val
AND ( val > low_val_today
OR val != last_val_yesterday
ORDER BY ts
{code}
with the expected results:
{code}
1 09.09.2012 06:12:02 23
2 09.09.2012 07:12:03 29
3 09.09.2012 08:12:04 30
4 09.09.2012 09:12:11 45
5 09.09.2012 10:12:12 60
6 09.09.2012 11:12:13 75
7 09.09.2012 12:21:24 95
8 09.09.2012 13:21:26 120
9 09.09.2012 14:21:27 142
10 10.09.2012 06:12:02 143
11 10.09.2012 07:12:03 144
12 10.09.2012 08:12:04 145
13 10.09.2012 09:12:11 146
14 10.09.2012 10:12:12 147
15 10.09.2012 11:12:13 148
16 10.09.2012 12:21:24 153
{code}
And the sampledata for shift 3 is:
{code}
with sampledata as (select to_date('08.09.2012 00:04:08', 'dd.mm.yyyy hh24:mi:ss') ts, 23 val from dual union ALL
select to_date('08.09.2012 02:04:08', 'dd.mm.yyyy hh24:mi:ss') ts, 45 val from dual union all
select to_date('08.09.2012 05:03:08', 'dd.mm.yyyy hh24:mi:ss') ts, 78 val from dual union all
select to_date('08.09.2012 06:54:11', 'dd.mm.yyyy hh24:mi:ss') ts, 90 val from dual union all
select to_date('08.09.2012 08:04:08', 'dd.mm.yyyy hh24:mi:ss') ts, 90 val from dual union all
select to_date('08.09.2012 10:04:19', 'dd.mm.yyyy hh24:mi:ss') ts, 90 val from dual union all
select to_date('08.09.2012 12:04:20', 'dd.mm.yyyy hh24:mi:ss') ts, 90 val from dual union all
select to_date('08.09.2012 16:12:02', 'dd.mm.yyyy hh24:mi:ss') ts, 90 val from dual union all
select to_date('08.09.2012 17:12:03', 'dd.mm.yyyy hh24:mi:ss') ts, 90 val from dual union all
select to_date('08.09.2012 19:12:04', 'dd.mm.yyyy hh24:mi:ss') ts, 90 val from dual union all
select to_date('08.09.2012 21:12:11', 'dd.mm.yyyy hh24:mi:ss') ts, 90 val from dual union all
select to_date('08.09.2012 22:00:12', 'dd.mm.yyyy hh24:mi:ss') ts, 24 val from dual union all
select to_date('08.09.2012 22:12:13', 'dd.mm.yyyy hh24:mi:ss') ts, 40 val from dual union all
select to_date('08.09.2012 23:21:24', 'dd.mm.yyyy hh24:mi:ss') ts, 68 val from dual union all
select to_date('09.09.2012 01:03:08', 'dd.mm.yyyy hh24:mi:ss') ts, 79 val from dual union all
select to_date('09.09.2012 02:54:11', 'dd.mm.yyyy hh24:mi:ss') ts, 124 val from dual union all
select to_date('09.09.2012 03:04:08', 'dd.mm.yyyy hh24:mi:ss') ts, 125 val from dual union all
select to_date('09.09.2012 04:04:19', 'dd.mm.yyyy hh24:mi:ss') ts, 126 val from dual union all
select to_date('09.09.2012 05:04:20', 'dd.mm.yyyy hh24:mi:ss') ts, 127 val from dual union all
select to_date('09.09.2012 06:12:02', 'dd.mm.yyyy hh24:mi:ss') ts, 127 val from dual union all
select to_date('09.09.2012 07:12:03', 'dd.mm.yyyy hh24:mi:ss') ts, 127 val from dual union all
select to_date('09.09.2012 08:12:04', 'dd.mm.yyyy hh24:mi:ss') ts, 127 val from dual union all
select to_date('09.09.2012 09:12:11', 'dd.mm.yyyy hh24:mi:ss') ts, 127 val from dual union all
select to_date('09.09.2012 10:12:12', 'dd.mm.yyyy hh24:mi:ss') ts, 127 val from dual union all
select to_date('09.09.2012 11:12:13', 'dd.mm.yyyy hh24:mi:ss') ts, 127 val from dual union all
select to_date('09.09.2012 12:21:24', 'dd.mm.yyyy hh24:mi:ss') ts, 127 val from dual union all
select to_date('09.09.2012 13:21:26', 'dd.mm.yyyy hh24:mi:ss') ts, 127 val from dual union all
select to_date('09.09.2012 14:21:27', 'dd.mm.yyyy hh24:mi:ss') ts, 127 val from dual union all
select to_date('09.09.2012 15:21:30', 'dd.mm.yyyy hh24:mi:ss') ts, 127 val from dual union all
select to_date('09.09.2012 16:21:32', 'dd.mm.yyyy hh24:mi:ss') ts, 127 val from dual union all
select to_date('09.09.2012 17:21:33', 'dd.mm.yyyy hh24:mi:ss') ts, 127 val from dual union all
select to_date('09.09.2012 21:21:33', 'dd.mm.yyyy hh24:mi:ss') ts, 127 val from dual union ALL
select to_date('09.09.2012 22:21:33', 'dd.mm.yyyy hh24:mi:ss') ts, 5 val from dual union ALL
select to_date('09.09.2012 22:51:33', 'dd.mm.yyyy hh24:mi:ss') ts, 23 val from dual union all
select to_date('09.09.2012 23:21:33', 'dd.mm.yyyy hh24:mi:ss') ts, 40 val from dual union all
select to_date('10.09.2012 00:04:08', 'dd.mm.yyyy hh24:mi:ss') ts, 50 val from dual union all
select to_date('10.09.2012 01:03:08', 'dd.mm.yyyy hh24:mi:ss') ts, 60 val from dual union all
select to_date('10.09.2012 02:54:11', 'dd.mm.yyyy hh24:mi:ss') ts, 78 val from dual union all
select to_date('10.09.2012 03:04:08', 'dd.mm.yyyy hh24:mi:ss') ts, 142 val from dual union all
select to_date('10.09.2012 04:04:19', 'dd.mm.yyyy hh24:mi:ss') ts, 145 val from dual union all
select to_date('10.09.2012 05:04:20', 'dd.mm.yyyy hh24:mi:ss') ts, 146 val from dual union all
select to_date('10.09.2012 06:12:02', 'dd.mm.yyyy hh24:mi:ss') ts, 146 val from dual union all
select to_date('10.09.2012 07:12:03', 'dd.mm.yyyy hh24:mi:ss') ts, 146 val from dual union all
select to_date('10.09.2012 08:12:04', 'dd.mm.yyyy hh24:mi:ss') ts, 146 val from dual union all
select to_date('10.09.2012 09:12:11', 'dd.mm.yyyy hh24:mi:ss') ts, 146 val from dual union all
select to_date('10.09.2012 10:12:12', 'dd.mm.yyyy hh24:mi:ss') ts, 146 val from dual union all
select to_date('10.09.2012 11:12:13', 'dd.mm.yyyy hh24:mi:ss') ts, 146 val from dual union all
select to_date('10.09.2012 12:21:24', 'dd.mm.yyyy hh24:mi:ss') ts, 146 val from dual union all
select to_date('10.09.2012 13:21:26', 'dd.mm.yyyy hh24:mi:ss') ts, 146 val from dual union all
select to_date('10.09.2012 14:21:27', 'dd.mm.yyyy hh24:mi:ss') ts, 146 val from dual union all
select to_date('10.09.2012 15:21:30', 'dd.mm.yyyy hh24:mi:ss') ts, 146 val from dual union all
select to_date('10.09.2012 16:21:32', 'dd.mm.yyyy hh24:mi:ss') ts, 146 val from dual union all
select to_date('10.09.2012 21:21:33', 'dd.mm.yyyy hh24:mi:ss') ts, 146 val from dual)
, got_analytics AS
SELECT ts, val
, MIN (val) OVER ( PARTITION BY TRUNC (ts)
ORDER BY ts DESC
) AS min_val_after
, CASE
WHEN ROW_NUMBER () OVER ( PARTITION BY TRUNC (ts)
ORDER BY val
, ts
) = 1
THEN -1 -- Impossibly low val
ELSE LAG (val) OVER ( PARTITION BY TRUNC (ts)
ORDER BY ts
END AS prev_val
, MIN (val) OVER (PARTITION BY TRUNC (ts))
AS low_val_today
, NVL ( LAST_VALUE (val) OVER ( ORDER BY ts
RANGE BETWEEN UNBOUNDED PRECEDING
AND ts - TRUNC (ts) PRECEDING
, -1
) AS last_val_yesterday
FROM sampledata
SELECT ts
, val
FROM got_analytics
WHERE val <= min_val_after
AND val > prev_val
AND ( val > low_val_today
OR val != last_val_yesterday
ORDER BY ts
{code}
with the unexpected results:
{code}
- ts val
1 08.09.2012 00:04:08 23
2 08.09.2012 22:12:13 40
3 08.09.2012 23:21:24 68
4 09.09.2012 22:21:33 5
5 09.09.2012 22:51:33 23
6 09.09.2012 23:21:33 40
7 10.09.2012 00:04:08 50
8 10.09.2012 01:03:08 60
9 10.09.2012 02:54:11 78
10 10.09.2012 03:04:08 142
11 10.09.2012 04:04:19 145
12 10.09.2012 05:04:20 146
{code}
The result should be:
{code}
- ts val
1 08.09.2012 00:04:08 23
2 08.09.2012 02:04:08 45
3 08.09.2012 05:03:08 78
4 08.09.2012 06:54:11 90
5 08.09.2012 22:00:12 24
6 08.09.2012 22:12:13 40
7 08.09.2012 23:21:24 68
8 09.09.2012 01:03:08 79
9 09.09.2012 02:54:11 124
10 09.09.2012 03:04:08 125
11 09.09.2012 04:04:19 126
12 09.09.2012 05:04:20 127
13 09.09.2012 22:21:33 5
14 09.09.2012 22:51:33 23
15 09.09.2012 23:21:33 40
16 10.09.2012 00:04:08 50
17 10.09.2012 01:03:08 60
18 10.09.2012 02:54:11 78
19 10.09.2012 03:04:08 142
20 10.09.2012 04:04:19 145
21 10.09.2012 05:04:20 146
{code}
Thank you for your help! -
Hello Everyone,
I'm studying QoS and I'm wondering how does a Cisco Engineer find out what the best Minimum and Maximum Threshold rates are when using WRED?
Where would one find these values?
I'm under the impression that it requires a study that's based on the size of the queues, is that correct?
But then, I come to the conclusion that even if the queues are big enough, application critical data like (VOIP) would suffer from delay..
So, how do you calculate the min and max threshold values..
Thanks ahead of time..
PRDisclaimer
The Author of this posting offers the information contained within this posting without consideration and with the reader's understanding that there's no implied or expressed suitability or fitness for any purpose. Information provided is for informational purposes only and should not be construed as rendering professional advice of any kind. Usage of this posting's information is solely at reader's own risk.
Liability Disclaimer
In no event shall Author be liable for any damages whatsoever (including, without limitation, damages for loss of use, data or profit) arising out of the use or inability to use the posting's information even if Author has been advised of the possibility of such damage.
Posting
Setting WRED parameters, for optimal performance, is (IMO) very tedious. Lots of variables involved.
For starters, it shouldn't normally be applied to traffic that's not rate-adaptive, such as VoIP.
It works best for multiple large bulk data transfer TCP streams that are using dropped packets for their principle flow control. Then it can be optimized to maximize their "goodput".
To answer your question, you might study RED literature, and its many variants, found on the Internet.
You also want to study, if you're not already very familiar, with how adaptive flow rate protocols, such as TCP, behave when packets are dropped. (With TCP also be mindful of the different "flavors", i.e. Tahoe, Reno, New-Reno, etc.)
If you have specific questions, post again to this thread, and I might be able to help. -
Min and MAx Value in a SELECT Statement
Hi,
I have a scenario where I am Selecting the values BETWEEN MIN and MAX values:
SELECT * FROM ABC WHERE CODE BETWEEN MIN(CODE) AND MAX(CODE)
ITS GETTING Error as:ORA-00934: group function is not allowed here
Any help will be needful for me.select substr(no,1,3)||to_char(substr(no,4,1)+1) "first missing number"
from
with t as
(select 'ABC1' no from dual
union select 'ABC2' from dual
union select 'ABC3' from dual
union select 'ABC5' from dual
union select 'ABC6' from dual
union select 'ABC8' from dual
select no, lead(no,1,0) over (order by no) next_no from t
where substr(next_no,4,1) - substr(no,4,1) > 1
and rownum = 1; -
Find more than one min and max in 2D array contain 0 rows
Hi
I have a 2D array and I would like to find the max and min elements between series of 0s. As you can see in the picture If I remove all 0s from the array and use the max and min function then I will have just one min and one max but I need to find min and max after every 0 rows so you can see from the picture ( just as an example) I will have 3 min and 3 max numbers. Would you please help me with this code. Do you now any algorithm that can find min and max between 0s?
I have also attached my code to remove 0s and then search for max and min numbers but as I mentioned I need min and max for every part
Many thanks
Attachments:
2.jpg 82 KB
3.jpg 27 KBThanks altenbach
I have attached the vi to this post. I would really apperciate if you help me with this example. The min values should be 100, 1500 and 4000 and the max values should be 1200,2600,5400 so as u mentioned the output should be this 2D array
100,1200
1500,2600
4000,5400
Attachments:
new.vi 6 KB
Maybe you are looking for
-
Hi , There is a cmd tool that we use for which we need to enter the uid and pwd in command line, i am writing a script , i would like to know is there a better way of prompting the uid and pwd of command prompt in windows prompt box using powershell
-
LiveCycle Data Services without Java...?
Hey everyone, I recently came across the really cool LiveCylce DS stuff. The part that most interests me is the managed data features that make the client side coding super simple. Unfortunately, it looks like it only works with a java back-end. Is
-
Whenever to try to set my audio in properties from "event" to something else (stream) the options are greyed out.
-
I know the first few ATIs have hit the ground - wondering about performance under OSX & XP. Hopefully, nothing but good news...
-
Views in Oracle DB not seen thru DBConnect
Has anyone come across a situation where a View created on an Oracle DB is not seen thru DB Connect ? I have views created on an Oracle DB, which can be confirmed independently via pl/sql. When I establish link between a SAP BW and the Oracle DB usin