Aggregate function in the query
Hi gurus,
What makes presentation layer send queries with Aggregate( by ) function eventhough this function is not used in the column formulas?
Now comes a long explanation - only for the patient ones :-)
I am working OBIEE / Essbase.
A strange thing happened to one of my reports - exactly the same report (pivot) in production (old repository) works fine, but brings wrong results on the new repository.
I found out that SQL sent to OBIEE is different.
With old repository, it sends a query with 'Aggregate ( by)' function used for measures. However with the new one, it sends just column names without the Aggregate.
Where shall I look for the difference?
-- OLD (Good) query -----------
SELECT DIM_BATCH_HEADERS."Gen3,DIM_BATCH_HEADERS" saw_0,
PROD_QTY.PROD_ACTUAL_QTY_KG/1000 saw_1,
DIM_COMPONENT."Gen3,DIM_COMPONENT" saw_2, ' ' saw_3,
COST.COMP_ACTUAL_COST_ILS_PER_TON saw_4, 0 saw_5,
COST.ACTUAL_COST_K_ILS saw_6, 0 saw_7,
AGGREGATE(saw_1 BY ),
AGGREGATE(saw_4 BY ),
AGGREGATE(saw_6 BY ),
AGGREGATE(saw_1 BY saw_0, saw_5),
AGGREGATE(saw_4 BY saw_0, saw_5),
AGGREGATE(saw_6 BY saw_0, saw_5)
FROM "COP_MAAD#1" WHERE (COMP_QTY.COMP_RELEVANT > 0)
AND (DIM_TIME."YEAR" = '2009')
AND (DIM_BATCH_HEADERS."Gen2,DIM_BATCH_HEADERS" = 'ABC')
ORDER BY saw_1 DESC, saw_4 DESC, saw_0, saw_2, saw_3, saw_5, saw_7
-- NEW (Incorrect) Query ---------------
SELECT DIM_BATCH_HEADERS."Gen3,DIM_BATCH_HEADERS" saw_0,
PROD_QTY.PROD_ACTUAL_QTY_KG/1000 saw_1,
DIM_COMPONENT."Gen3,DIM_COMPONENT" saw_2,
' ' saw_3, COST.COMP_ACTUAL_COST_ILS_PER_TON saw_4,
0 saw_5,
COST.ACTUAL_COST_K_ILS saw_6,
0 saw_7 FROM "COP_MAAD#1"
WHERE (COMP_QTY.COMP_RELEVANT > 0) AND (DIM_TIME."YEAR" = '2009')
AND (DIM_BATCH_HEADERS."Gen2,DIM_BATCH_HEADERS" = 'ABC') ORDER BY saw_1 DESC, saw_4 DESC
Thanks,
Alex
Hi,
Can anybody reply to the above question please?
regards,
Siva
Similar Messages
-
Error in using aggregate function in Outer Query in Siebel Analytics
Hi,
When I am using aggregate function in outer query in Siebel Analytics I am facing error.
Error Codes: OPR4ONWY:U9IM8TAC:OI2DL65P:OI2DL65P
State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 59111] The SQL statement must include a GROUP BY clause. (HY000)
Bellow is the code.
SELECT test1.username saw_0, test1.desg saw_1,COUNT (test2.querydate) saw_2
FROM (SELECT POSITION.CBL username,
POSITION.CBP desg
FROM "CM"
WHERE (POSITION.BPTCD = 'Marketing')
AND (POSITION.EDate =TIMESTAMP '1899-01-01 00:00:00'
) test1,
(SELECT users.UN username,
measures."Query Count" querycount,
measures."Max Total Time" secs,
topic.db dashboardname,
"Query Time".DATE querydate
FROM "Plan"
WHERE (topic."Dashboard Name" IN ('DS'))) test2
WHERE test2.username = LOWER (test1.username)
AND test2.dashboardname = 'DS'
GROUP BY test1.username, test1.desgShould your query be a valid SQL query?
I can't think that the query you have would be valid in a SQL plus window.
Chris -
BW User Exit - Code in function of the query name
Hi,
I would like to create an user exit code which execute a algorithm different in function of the query executed. do you know in which variable is store the technical name of the query.
CASE query
WHEN 'Z_ZAPO_001'.
V1 = 1
WHEN 'Z_ZAPO_002'.
V1 = 2 WHEN '10' OR '11' OR '12'.
ENDCASE.Yaroslav,
I_S_RKB1D-COMPID will never be filled for authorization user-exits (I_STEP = 0). Don't ask my why, I once raised this question to OSS and they replied it was never foreseen to work with authorization user-exits. God knows why, it's very unlogical and it wouldn't cost them a lot of work to get it working...
I could solve this problem by applying a little trick. In our queries we included a user-exit keydate variable. This will push the user-exit first in I_STEP = 1 mode where I_S_RKB1D-COMPID is filled. Then save the query name by exporting it to the ABAP-memory. Afterwards, the user exit with code for I_STEP = 0 will be processed and then you can import the query name from the ABAP memory.
I agree it sounds a little bit tricky but there is no better option I'm affraid. -
Removing Aggregate Functions from the Action Menu
Hi People,
I'd like to remove the following aggregate functions from the action menu on a report, if possible:
1. Minimum
2. Maximum
3. Median
Is this actually possible, or am I stuck with them? I've had a good sniff around, but can't find any way to remove them so far.
Cheers.
JamesOk, first click on your name in the menu bar. Then click on "Users&Groups Prefrences..." You should see a little house icon next to 'Login Options" under the menu where all user accounts are displayed. Click on it. Where it says "Show fast user switching menu as" and next to it a dropdown saying "Full Name" change that to icon. After you have done that, the name should be replaced with an icon. Hope this helped.
-
Aggregate function in native query (EJB 3.0)
How do you run a aggregate function in a native query? I have a particular use case, for reporting purposes, where the result set is too large to fetch the actual CMP collection, thus I need to execute a native count/avg select. I want some thing like,
Integer totalRecords = (Integer)
em.createNativeQuery("select count(*) from records").getSingleResult();Oracle is intelligent enough to use index only if query result filtering is based on it and result set is less than 5% of the total data set.Sorry to be blunt but that 5% stuff is nonsense.
Here since the index column is not used in the WHERE clause, oracle performs full table scan.That's not true either. Under the right circumstances the optimizer can use the index, even without a WHERE clause in the query:
SQL> create table t as select * from dba_objects where object_type is not null;
Table created.
SQL> alter table t modify object_type not null;
Table altered.
SQL> create index t_idx on t(object_type);
Index created.
SQL> explain plan for
2 select object_type, count(*) from t group by object_type;
Explained.
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 44 | 396 | 60 (7)| 00:00:01 |
| 1 | HASH GROUP BY | | 44 | 396 | 60 (7)| 00:00:01 |
| 2 | INDEX FAST FULL SCAN| T_IDX | 72474 | 636K| 57 (2)| 00:00:01 |
-------------------------------------------------------------------------------With the OP's query, it (apparently) can not be satisfied by using only the index.
WHERE TO_CHAR(COL) = TO_CHAR(COL)I don't even know what this means. Usually if you perform a function on an indexed column, the optimizer will not use the index (unless of course it's an fbi). -
Any difference between distinct and aggregate function in sql query cost???
Hi,
I have executed many sql stmts patterns- such as:
a) using a single table
b) using two tables, using simple joins or outer joins
but i have not noticed any difference in sql stmts in cost and in execution plan....
Anyway, my colleague insists on that using aggregate function is less costly compared to
distinct....(something i have not confirmed, that's why i beleive that they are exactly the same...)
For the above reffered 1st sql pattern.. we could for example use
select distinct deptno
from emp
select count(*), deptno
from emp
group by deptno select distinct owner, object_type from all_objects
select count(*), owner, object_type from all_objects
group by owner, object_typeHave you found any difference between the two ever...????
Note: I use Ora DB 10g v2.
Thank you,
Simdistinct and aggregate function are for different uses and may give same result but if u r using aggregate function to get distinct records, it will be expensive...
ex
select distinct deptno from scott.dept;
Statistics
0 recursive calls
0 db block gets
2 consistent gets
0 physical reads
0 redo size
584 bytes sent via SQL*Net to client
488 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
4 rows processed
select deptno from scott.emp group by deptno;
Statistics
307 recursive calls
0 db block gets
60 consistent gets
6 physical reads
0 redo size
576 bytes sent via SQL*Net to client
488 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
6 sorts (memory)
0 sorts (disk)
3 rows processed
Nimish Garg
Software Developer
*(Oracle & ASP.NET)*
Indiamart Intermesh Limited, Noida
To Get Free Oracle & ASP.NET Code Snippets
Follow: http://nimishgarg.blogspot.com -
How to use multiple aggregate functions in single query
hi to all
The output will be giving first_name,last_name,max(salary),min(salary) and the output will be department wise.From employees table in single query
output will be:
first_name|last_name|max(salary)|min(salary)SELECT first_name||' '||last_name as ename,
MIN(sal) KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno) "Lowest",
MAX(sal) KEEP (DENSE_RANK LAST ORDER BY sal) OVER (PARTITION BY deptno) "Highest"
FROM emp
ORDER BY deptno, sal;Edited by: Ramio on Jan 10, 2012 10:43 PM -
Why doesn't PIVOT clause work with COLLECT aggregate function in 11g ?
Hello all !
I am really puzzled as to what is considered an aggregate function in the context of the PIVOT clause in 11g.
I have been toying with quite a few things related to collections lately and this arose as an aside :
CREATE TABLE TEST_COLL
NODE_ID VARCHAR2(15 CHAR) NOT NULL,
NODE_VALUE VARCHAR2(45 CHAR) NOT NULL,
NODE_LEVEL NUMBER(1) NOT NULL
CREATE OR REPLACE TYPE TREE_NODE AS OBJECT
NODE_KEY VARCHAR2( 15 CHAR),
NODE_NAME VARCHAR2(127 CHAR)
CREATE OR REPLACE TYPE TREE_NODES AS TABLE OF TREE_NODE NOT NULL;At this stage I am sure we all agree that the query
SELECT NODE_LEVEL,
CAST(COLLECT(TREE_NODE(NODE_ID, NODE_VALUE)) AS TREE_NODES) AS NODES
FROM TEST_COLL
GROUP BY NODE_LEVEL;is perfectly valid as the COLLECT function is an aggregate function according to the [Official Documentation|http://docs.oracle.com/cd/E11882_01/server.112/e10592/functions031.htm#i1271564]
But then, one of the following two queries should work
SELECT CAST(REGION_NODES AS TREE_NODES) AS REGIONS,
CAST(DEPARTMENT_NODES AS TREE_NODES) AS DEPARTMENTS,
CAST(AREA_NODES AS TREE_NODES) AS AREAS,
CAST(CENTRE_NODES AS TREE_NODES) AS CENTRES
FROM (SELECT NODE_LEVEL, TREE_NODE(NODE_ID, NODE_VALUE) AS NODE
FROM TREE_COLL
PIVOT (COLLECT(NODE) FOR NODE_LEVEL IN (1 AS REGION_NODES,
2 AS DEPARTMENT_NODES,
3 AS AREA_NODES,
4 AS CENTRE_NODES
or (better)
SELECT REGION_NODES AS REGIONS,
DEPARTMENT_NODES AS DEPARTMENTS,
AREA_NODES AS AREAS,
CENTRE_NODES AS CENTRES
FROM (SELECT NODE_LEVEL, TREE_NODE(NODE_ID, NODE_VALUE) AS NODE
FROM TREE_COLL
PIVOT (CAST(COLLECT(NODE) AS TREE_NODES) FOR NODE_LEVEL IN (1 AS REGION_NODES,
2 AS DEPARTMENT_NODES,
3 AS AREA_NODES,
4 AS CENTRE_NODES
);yet, both fail with
ORA-56902: expect aggregate function inside pivot operationInvestigating further, I found the same behaviour when using XMLAGG as the aggregate function in the PIVOT clause.
Is this normal ? And if it is, is there any other way to achieve the result I was anticipating ?
My version is
SQL> SELECT BANNER FROM V$VERSION;
BANNER
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for 64-bit Windows: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - ProductionThanks in advance
Best Regards
PhilipMost likely a bug. But you can bypass it by using any other aggregate making sure group consists of a single row and apply collect to a pivoted value. Yes, the cost is double aggregation. And also there is another cost - you would need to create MAP member function otherwise aggreations like MAX/MIN, etc. will not work:
CREATE OR REPLACE TYPE TREE_NODE AS OBJECT
NODE_KEY VARCHAR2( 15 CHAR),
NODE_NAME VARCHAR2(127 CHAR),
map member function f return varchar2
Type created.
CREATE OR REPLACE TYPE BODY TREE_NODE AS
map member function f return varchar2 is
begin
return NODE_NAME;
end f;
end;
Type body created.
CREATE OR REPLACE TYPE TREE_NODES AS TABLE OF TREE_NODE NOT NULL
Type created.
SQL> select *
2 from test_coll
3 /
NODE_ID NODE_VALUE NODE_LEVEL
1 A 1
2 B 2
3 C 3
4 D 4
5 E 1
6 F 2
7 G 3
8 H 4
8 rows selected.
SQL> Now:
SELECT CAST(COLLECT(REGION_NODES) AS TREE_NODES) AS REGIONS,
CAST(COLLECT(DEPARTMENT_NODES) AS TREE_NODES) AS DEPARTMENTS,
CAST(COLLECT(AREA_NODES) AS TREE_NODES) AS AREAS,
CAST(COLLECT(CENTRE_NODES) AS TREE_NODES) AS CENTRES
FROM (
SELECT ROWID RID,
NODE_LEVEL,
TREE_NODE(NODE_ID, NODE_VALUE) AS NODE
FROM TEST_COLL
PIVOT (MAX(NODE) FOR NODE_LEVEL IN (
1 AS REGION_NODES,
2 AS DEPARTMENT_NODES,
3 AS AREA_NODES,
4 AS CENTRE_NODES
REGIONS(NODE_KEY, NODE_NAME) DEPARTMENTS(NODE_KEY, NODE_NAME) AREAS(NODE_KEY, NODE_NAME) CENTRES(NODE_KEY, NODE_NAME)
TREE_NODES(TREE_NODE('1', 'A'), TREE_NODE('5', 'E')) TREE_NODES(TREE_NODE('6', 'F'), TREE_NODE('2', 'B')) TREE_NODES(TREE_NODE('7', 'G'), TREE_NODE('3', 'C')) TREE_NODES(TREE_NODE('8', 'H'), TREE_NODE('4', 'D'))
SQL> SY. -
Oracle 11g SUM function on the result of inner Select
The inner Select returns rows with the values. The outer select running on tthe result of inner select SUM the result of the inner select.
Although there are valid rows of the inner select the SUM in the outer SELECT return NVL. As a comment any aggregate function on the outer select returns NVL.
The query is below.
select a.yil,
a.ay,
sum(brut_prim),
sum(kom),
from (SELECT oid_pol_kesilen_acente,
to_char(pp.zeyil_tanzim_tar, 'yyyy') yil,
to_char(pp.zeyil_tanzim_tar, 'mm') ay,
sum(decode(substr(pp.no, 1, 1),
'T',
pp.zeyil_brut_prim_fark / 2,
pp.zeyil_brut_prim_fark)) -
sum(pp.zeyil_gv_fark) brut_prim,
sum(pp.zeyil_acente_kom_fark) kom
from pol_police pp, org_acente oa
WHERE SUBSTR(PP.NO, 1, 1) != 'D')
group by oid_pol_kesilen_acente,
to_char(pp.zeyil_tanzim_tar, 'yyyy'),
to_char(pp.zeyil_tanzim_tar, 'mm')) a
group by a.yil, a.ay, oid_pol_kesilen_acente
Edited by: [email protected] on May 7, 2010 2:09 AM
Edited by: [email protected] on May 7, 2010 2:31 AMHi,
please try the below sql:
select a.yil, a.ay, sum(brut_prim), sum(kom),
from (SELECT oid_pol_kesilen_acente,to_char(pp.zeyil_tanzim_tar, 'yyyy') yil, to_char(pp.zeyil_tanzim_tar, 'mm') ay,
sum(decode(substr(pp.no, 1, 1), 'T',nvl(pp.zeyil_brut_prim_fark,0) / 2,nvl(pp.zeyil_brut_prim_fark,0))) - sum(nvl(pp.zeyil_gv_fark,0)) brut_prim,
sum(nvl(pp.zeyil_acente_kom_fark,0)) kom
from pol_police pp, org_acente oa
WHERE SUBSTR(PP.NO, 1, 1) != 'D'
group by oid_pol_kesilen_acente,
to_char(pp.zeyil_tanzim_tar, 'yyyy'),
to_char(pp.zeyil_tanzim_tar, 'mm')
) a
group by a.yil, a.ay, oid_pol_kesilen_acente ;
Thanks,
Siva -
Analytic function and aggregate function
What are analytic function and aggregate function. What is difference between them?
hi,
Analytic Functions :----------
Analytic functions compute an aggregate value based on a group of rows. They differ from aggregate functions in that they return multiple rows for each group. The group of rows is called a window and is defined by the analytic_clause. For each row, a sliding window of rows is defined. The window determines the range of rows used to perform the calculations for the current row. Window sizes can be based on either a physical number of rows or a logical interval such as time.
Analytic functions are the last set of operations performed in a query except for the final ORDER BY clause. All joins and all WHERE, GROUP BY, and HAVING clauses are completed before the analytic functions are processed. Therefore, analytic functions can appear only in the select list or ORDER BY clause.
Analytic functions are commonly used to compute cumulative, moving, centered, and reporting aggregates.
Aggregate Functions :----------
Aggregate functions return a single result row based on groups of rows, rather than on single rows. Aggregate functions can appear in select lists and in ORDER BY and HAVING clauses. They are commonly used with the GROUP BY clause in a SELECT statement, where Oracle Database divides the rows of a queried table or view into groups. In a query containing a GROUP BY clause, the elements of the select list can be aggregate functions, GROUP BY expressions, constants, or expressions involving one of these. Oracle applies the aggregate functions to each group of rows and returns a single result row for each group.
If you omit the GROUP BY clause, then Oracle applies aggregate functions in the select list to all the rows in the queried table or view. You use aggregate functions in the HAVING clause to eliminate groups from the output based on the results of the aggregate functions, rather than on the values of the individual rows of the queried table or view.
let me know if you are feeling any problem in understanding.
thanks.
Edited by: varun4dba on Jan 27, 2011 3:32 PM -
Aggregate functions in EJBQL ???
Does the latest version of Oracle App server support aggregate functions like SUM/COUNT/AVG in the EJBQL?
Does the latest version of Oracle App server support aggregate functions like SUM/COUNT/AVG in the EJBQL? Hi Swami --
The latest version of Oracle9iAS - v903 is J2EE 1.3 compatible so it supports all of the EJB 2.0 specification.
The EJB 2.0 specification lists the following functions for EJBQL:
String Functions:
CONCAT(String, String) returns a String
SUBSTRING(String, start, length) returns a String
LOCATE(String, String [, start]) returns an int
LENGTH(String) returns an int
Arithmetic Functions:
ABS(number) returns a number (int, float, or double)
SQRT(double) returns a double
The latest version of the EJB 2.1 specification which will be part of J2EE 1.4, has added support for aggregate functions like orderby, sum, count, etc.
11.2.7.2 Aggregate Functions in the SELECT Clause
The result of an EJB QL query may be the result of an aggregate function applied to a path expression.
The following aggregate functions can be used in the SELECT clause of an EJB QL query: AVG,
COUNT, MAX, MIN, SUM.
We will support these when the EJB 2.1 specification is finalized and we produce our J2EE 1.4 compatible implementation.
cheers
-steve- -
Self Join and Aggregate Functions
Hi all,
I am trying a query in TOAD where I need to use an aggregate function MAX and a self join using a subquery. Its working fine when there is no aggregate function but when I tried to use the MAX function then its running for infi time. Is it because of the invalid joins? or because of the usage of the self join and aggregate func?
The query contains some other tables too....
Any one please help....
Thanks in advance,
GToad will bring back a limited set of rows and present them to you giving the impression that the work is done. Adding an aggregate function requires the entire resultset to be traversed.
Yes, post the 2 queries to verify what I am saying. -
Aggregate function on "large value type"
We are constrained to use a model that stores records in a main table and various attributes of the record in a second table. Something like this: main record table CAR, attribute table CAR_DETAILS with CAR_DETAILS have key value pairs like "color"
"blue" and "doors" "4".
For reports we need to flatten the one to many nature of this to get CAR and color and doors by using an aggregate function like:
car_id, max(car_detail.value) filtered on car_detail.key = "color", max(car_detail.value) filtered on car_detail.key = "doors".
This works on other tables but the car_detail table (shall we say) appears to store its values as blobs. In any case when we attempt to aggregate we get "The query uses an aggregate function on a large value type expression. Large value type expressions
can not be aggregated."
Since we can't change the model, we would need to use another function to change this to a smaller string (or date, these are actually mostly date), but none of the very limited set of functions available seems to work to make this aggregation possible (and
there is no "first" or anything else similar).
The list of functions available in Report Model Queries can be found at https://msdn.microsoft.com/en-us/library/ee210538.aspx
Appreciate any ideas on how to solve this
I found a work around : create a second dataset reversing the direction:
car_detail.key, car_detail.value, car_id
with this filtered by car_detail.key = "color" (or doors etc)
Then use a lookup from the first dataset to the second to display the data:
=Lookup(Fields!car_Id.Value,Fields!Icar_Id.Value,Fields!car_detail.Value, "DataSet2")
where the 1st field is in the main report dataset, the second and third are in the lookup dataset, and the 4th parameter is the name of the lookup dataset.
Would still really like to have a solution that allows aggregation for ease of use and efficiency. -
Basic functions (high) in query formula for highest # of days past due
Hi All,
I hope you can help. I am trying to create a formula in a query for FIAR Line Item Cube (0fiar_c03). I would like to calculate the hightest number of days past due for open line items. There is an operator 'high' in basic functions within the query formula. Is it possible to use this?
Regards,
Cheryl AdamonisThere is a workaround usind conditions.That is you can try to filter the top 10 % or top 10 after calculating the no of days past.However this way you will not be displaying complete dataset
-
PL/SQL function in datamodel query
Hi All,
I have the following problem:
I have a query Q1 returning a few rows. In the group G1 using this query Q1 i have a computed field returning a number NUM_1.
select col_1, col_2 from table_1;
So the output looks like:
row 1 col_1 col_2 NUM_1_1
row n col_1n col_2n NUM_1_n
I want to order these rows by the calculated column NUM_1 the highest first.
I know i can't order by a calculated column but can i do it by using a pl/sql function in the query to calculate the NUM_1?
Like:
select col_1, col_2, function(x) NUM_1 from table_1;
And where should i create this function? Can it be done in the program unit section or do i have to create a library?
Best regards,
SnoeskyOke, i have created a break group on the calculated field.
Ordering works fine now.
I have an additional question:
Is it possible to dynamically order this break (column) group? Meaning thru a parameter to tell the ordering to be descending or ascending.
Regards,
Snoesky
Maybe you are looking for
-
In J1IH - Balancing field "Profit Center" in line item 001 not filled
Dear Sir/Madam, Am doing Additional Excise JV in J1IH, when put some amount in AED filed and save getting the error as below "Balancing field "Profit Center" in line item 001 not filled" If any one have come across this error while doing Additional E
-
Firefox is running very slow and keep's saying not responding for 3 seconds and then does it again repeatedly. Please even when I type words and letters from firefox it types very slow and what I am typing has to catch up with the last thing I typed.
-
Hello All I have the fabulous E61, however, sadly have it on the UK Network 3, didn't think anything of it until recently tried to use Worldmate and Morange - 3 dont support third party software - I almost laughed down the phone. Can you believe that
-
I have an empty box on my bookmarks toolbar I can't get rid of.
Starting today, I have an empty box on my bookmarks toolbar that I can't get to go away. It comes after the >> icon where I can see more bookmarks, but it is linked to the bookmarks toolbar as it goes away when I uncheck this bar. I have tried custom
-
Hi: I am using WIN7 ultimate 64 bit and excel 2010 (office 2010 Pro plus). I can not open any excel file(.xls and .xlsx) with a double click on the file. if I double click on the file, the application launches and excel starts, but no file is loaded