Welcome to the SAP BPC and HANA blog

Welcome to the SAP BPC and HANA blog On this site, I will publish the contents of my book on Implementing SAP BPC and HANA. It is a compr...

Showing posts with label sql. Show all posts
Showing posts with label sql. Show all posts

sql for Statistics

As part of my sql tutorial which is still very much in progress, I thought I'd do a quick post on using sql with statistics. I am covering two topics today, which are elementary concepts in statistics but forms a compliment my tutorials very well.

Permutations

Consider a set of 4 objects. Now, suppose that we want to fill three positions with objects selected from the 4. We need to consider the order of the items in each set as well, then the number of possible ordered arrangements is 24 and they are


a b c
b a c
c a b
Dab
a b d
 b a d
 c a d
d a c
a c b
 b c a
 c b a
d b c
a c d
 b c d
 c b d
 d b a
a d c
b d a
 c d b
d c a
a d b
b d c
c d a
d c b

The number of possible ordered arrangements can be computed as follows:

Since there are 3 positions and 4 objects, the first position can be filled in 4 different ways. Once the first position is filled the remaining 2 positions can be filled from the remaining 3 objects. Thus, the second position can be filled in 3 ways. The third position can be filled in 2 ways. Then the total number of ways 3 positions can be filled out of 4 objects is given by

(4)(3)(2) = 24.

In HANA, we can write the following sql to achieve the same result set:

do begin

t_data = 
    select 'a' as id
    from dummy
    union all 
    select  'b' as id
    from dummy
    union all 
    select  'c' as id
    from dummy
    union all 
    select  'd' as id
    from dummy
    ;
    
select o.id, t.id, r.id, f.id
from :t_data as o
cross join :t_data as t
cross join :t_data as r
cross join :t_data as f
where o.id != t.id
and o.id != r.id
and o.id != f.id
and t.id != r.id
and t.id != f.id
and r.id != f.id
;

end;


  ;ID;ID;ID;ID
1 ;a ;b ;c ;d 
2 ;a ;b ;d ;c 
3 ;a ;c ;b ;d 
4 ;a ;c ;d ;b 
5 ;a ;d ;b ;c 
6 ;a ;d ;c ;b 
7 ;b ;a ;c ;d 
8 ;b ;a ;d ;c 
9 ;b ;c ;a ;d 
10;b ;c ;d ;a 
11;b ;d ;a ;c 
12;b ;d ;c ;a 
13;c ;a ;b ;d 
14;c ;a ;d ;b 
15;c ;b ;a ;d 
16;c ;b ;d ;a 
17;c ;d ;a ;b 
18;c ;d ;b ;a 
19;d ;a ;b ;c 
20;d ;a ;c ;b 
21;d ;b ;a ;c 
22;d ;b ;c ;a 
23;d ;c ;a ;b 
24;d ;c ;b ;a 



Combinations


In permutation, order is important. But in many problems, the order of selection is not important and interest centers only on the set of r objects. Let c denote the number of subsets of size r that can be selected from n different objects. 

How many committees of two chemists and one physicist can be formed from 4 chemists and 3 physicists?


do begin

t_phys =
    select 'P1' as id
    from dummy
    union all
    select  'P2' as id
    from dummy
    union all
    select  'P3' as id
    from dummy
    ;

t_chem =
    select 'C1' as id
    from dummy
    union all
    select  'C2' as id
    from dummy
    union all
    select  'C3' as id
    from dummy
    union all
    select  'C4' as id
    from dummy
    ;

  
select p.id, ca.id, cb.id
from :t_phys as p
cross join :t_chem as ca
cross join :t_chem as cb
where ca.id != cb.id
  and cb.id > ca.id
order by p.id, ca.id, cb.id
  ;


 ;ID;ID;ID
1 ;P1;C1;C2
2 ;P1;C1;C3
3 ;P1;C1;C4
4 ;P1;C2;C3
5 ;P1;C2;C4
6 ;P1;C3;C4
7 ;P2;C1;C2
8 ;P2;C1;C3
9 ;P2;C1;C4
10;P2;C2;C3
11;P2;C2;C4
12;P2;C3;C4
13;P3;C1;C2
14;P3;C1;C3
15;P3;C1;C4
16;P3;C2;C3
17;P3;C2;C4
18;P3;C3;C4



Next sql tutorial available now



The second chapter of my SAP HANA sql script tutorial is now available here. It is the beginning of covering the sql script language elements and covers BNF notation in more detail,

Be sure to check it out and subscribe. The next tutorial will follow shortly.

Should you require a SAP system to practice or try this out, follow the steps on 'How to activate your own SAP HANA system on the SAP Cloud Platform'


New sql script tutorials

I am publishing a new series of tutorials on SAP HANA sql script. These tutorials will form the basis of a new book I am writing and will be published on a regular basis, so subscribe to keep up to date.

 Introducing HANA sql script

The purpose of this guide is to simplify SAP HANA sql script. It differs from all the sql courses available. The sql language is looked at in detail, starting with a comprehensive look at the notation and syntactic elements and then progressing to cover the individual statements. Other courses may jump straight into the SELECT statement, for example, the following course spends almost all of the course introduction covering the installation of the database and only 42 seconds on SQL statement Fundamentals.


This pattern is repeated across blogs, online tutorials and MOOCs. No time is spent on teaching the notation and general syntax. Everyone jumps straight into the SELECT statement. Once more complex syntactic elements are reached, the student may get lost as the general principles have not been mastered yet and learning stops.
We believe that the first step in mastering sql is understanding the notation used in SAP’s documentation – a ‘Teach a man to fish’ approach. Once the notation is mastered, getting to grips with the rest of the language is significantly easier. You will be able to craft complex and efficient queries more effectively.

Why SAP HANA sql script?

We get this question often. So why did we choose to write a guide on SAP HANA sql. The reason is that SAP is the leading ERP provider with more than 12 million users, 121 000 installations and 41 200 customers. There is an additional imperative for customers to move to SAP HANA. At the end of 2025, SAP is sun-setting support for legacy software, such as SAP ERP and BW. Customers will have to upgrade their database to HANA, and upgrade their software to S/4HANA. A large install base, demand for skills and our enthusiasm for the SAP platform in general, choosing to create a course on SAP SQL script is a no-brainer.


Should you require a SAP system to practice or try this out, follow the steps on 'How to activate your own SAP HANA system on the SAP Cloud Platform'



<< Return to table of contents
                      Lesson 2: The sql script language>>>