67
Oracle SQL Pattern Matching Made Easy Oren Nakdimon www.db-oriented.com [email protected] +972-54-4393763 @DBoriented

SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

OracleSQL Pattern Matching

Made Easy

Oren Nakdimon

www.db-oriented.com

[email protected]

+972-54-4393763

@DBoriented

Page 2: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

MATCH_RECOGNIZE

Added in Oracle 12cR1

Enhanced analysis of row sequences

For detecting matches to complex patterns

A significant boost to the analytical capabilities of SQL

Very powerful

With Great Power Comes

Complex Syntax

Page 3: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Agenda

Start using Pattern Matching

Step by step

Not all the capabilities…

But all the essentials (and more)

Simple examples

Recommended resources

Page 4: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

http://db-oriented.com

Who Am I?

Page 5: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

1956 Switzerland Refrain Lys Assia French Switzerland1957 Netherlands Net als toen Corry Brokken 31 Dutch Germany1958 France Dors, mon amour André Claveau 27 French Netherlands1959 Netherlands Een beetje Teddy Scholten 21 Dutch France

1960 France Tom Pillibi Jacqueline Boyer 32 FrenchUnited Kingdom

1961 Luxembourg Nous les amoureux Jean-Claude Pascal 31 French France1962 France Un premier amour Isabelle Aubret 26 French Luxembourg

1963 Denmark Dansevise Grethe and Jørgen Ingmann 42 DanishUnited Kingdom

1964 Italy Non ho l'età Gigliola Cinquetti 49 Italian Denmark

1965 LuxembourgPoupée de cire, poupée de son France Gall 32 French Italy

1966 Austria Merci, Chérie Udo Jürgens 31 German Luxembourg

1967United Kingdom Puppet on a String Sandie Shaw 47 English Austria

1968 Spain La, la, la Massiel 29 SpanishUnited Kingdom

1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain

1970 IrelandAll Kinds of Everything Dana 32 English Netherlands

1971 MonacoUn banc, un arbre, une rue Séverine 128 French Ireland

1972 Luxembourg Après toi Vicky Leandros 128 FrenchUnited Kingdom

1973 Luxembourg Tu te reconnaîtras Anne-Marie David 129 French LuxembourgUnited

YEAR WINNER SONG PERFORMER POINTS LANGUAGE HOST

Page 6: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Find all the wins of Luxembourg

SELECT *FROM EUROVISION_WINNERSWHERE WINNER = 'Luxembourg';

Page 7: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

YEAR WINNER SONG HOST1960 France Tom Pillibi United Kingdom1961 Luxembourg Nous les amoureux France1962 France Un premier amour Luxembourg1963 Denmark Dansevise United Kingdom1964 Italy Non ho l'età Denmark1965 Luxembourg Poupée de cire, poupée de son Italy1966 Austria Merci, Chérie Luxembourg1967 United Kingdom Puppet on a String Austria1968 Spain La, la, la United Kingdom1969 Netherlands De troubadour Spain1970 Ireland All Kinds of Everything Netherlands1971 Monaco Un banc, un arbre, une rue Ireland1972 Luxembourg Après toi United Kingdom1973 Luxembourg Tu te reconnaîtras Luxembourg1974 Sweden Waterloo United Kingdom1975 Netherlands Ding-a-dong Sweden1976 United Kingdom Save Your Kisses for Me Netherlands1977 France L'oiseau et l'enfant United Kingdom1978 Israel A-Ba-Ni-Bi France1979 Israel Hallelujah Israel

Find all the wins of Luxembourg

Pattern Variable

1

2

3

4

LUX

SELECT YEAR, WINNER, SONG, HOST FROM EUROVISION_WINNERSMATCH_RECOGNIZE (ALL ROWS PER MATCHPATTERN (LUX)DEFINE LUX AS WINNER = 'Luxembourg'

)

Page 8: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

YEAR WINNER SONG HOST1960 France Tom Pillibi United Kingdom1961 Luxembourg Nous les amoureux France1962 France Un premier amour Luxembourg1963 Denmark Dansevise United Kingdom1964 Italy Non ho l'età Denmark1965 Luxembourg Poupée de cire, poupée de son Italy1966 Austria Merci, Chérie Luxembourg1967 United Kingdom Puppet on a String Austria1968 Spain La, la, la United Kingdom1969 Netherlands De troubadour Spain1970 Ireland All Kinds of Everything Netherlands1971 Monaco Un banc, un arbre, une rue Ireland1972 Luxembourg Après toi United Kingdom1973 Luxembourg Tu te reconnaîtras Luxembourg1974 Sweden Waterloo United Kingdom1975 Netherlands Ding-a-dong Sweden1976 United Kingdom Save Your Kisses for Me Netherlands1977 France L'oiseau et l'enfant United Kingdom1978 Israel A-Ba-Ni-Bi France1979 Israel Hallelujah Israel

Find 2 successive wins of Luxembourg

SELECT *FROM EUROVISION_WINNERSWHERE WINNER = 'Luxembourg';

Page 9: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

YEAR WINNER SONG HOST1960 France Tom Pillibi United Kingdom1961 Luxembourg Nous les amoureux France1962 France Un premier amour Luxembourg1963 Denmark Dansevise United Kingdom1964 Italy Non ho l'età Denmark1965 Luxembourg Poupée de cire, poupée de son Italy1966 Austria Merci, Chérie Luxembourg1967 United Kingdom Puppet on a String Austria1968 Spain La, la, la United Kingdom1969 Netherlands De troubadour Spain1970 Ireland All Kinds of Everything Netherlands1971 Monaco Un banc, un arbre, une rue Ireland1972 Luxembourg Après toi United Kingdom1973 Luxembourg Tu te reconnaîtras Luxembourg1974 Sweden Waterloo United Kingdom1975 Netherlands Ding-a-dong Sweden1976 United Kingdom Save Your Kisses for Me Netherlands1977 France L'oiseau et l'enfant United Kingdom1978 Israel A-Ba-Ni-Bi France1979 Israel Hallelujah Israel

Find 2 successive wins of Luxembourg

Pattern Variable

SELECT YEAR, WINNER, SONG, HOST FROM EUROVISION_WINNERSMATCH_RECOGNIZE (ORDER BY YEARALL ROWS PER MATCHPATTERN (LUX LUX)DEFINE LUX AS WINNER = 'Luxembourg'

)

1

LUX

order by

Page 10: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Variables Pattern

Page 11: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

YEAR WINNER SONG HOST1960 France Tom Pillibi United Kingdom1961 Luxembourg Nous les amoureux France1962 France Un premier amour Luxembourg1963 Denmark Dansevise United Kingdom1964 Italy Non ho l'età Denmark1965 Luxembourg Poupée de cire, poupée de son Italy1966 Austria Merci, Chérie Luxembourg1967 United Kingdom Puppet on a String Austria1968 Spain La, la, la United Kingdom1969 Netherlands De troubadour Spain1970 Ireland All Kinds of Everything Netherlands1971 Monaco Un banc, un arbre, une rue Ireland1972 Luxembourg Après toi United Kingdom1973 Luxembourg Tu te reconnaîtras Luxembourg1974 Sweden Waterloo United Kingdom1975 Netherlands Ding-a-dong Sweden1976 United Kingdom Save Your Kisses for Me Netherlands1977 France L'oiseau et l'enfant United Kingdom1978 Israel A-Ba-Ni-Bi France1979 Israel Hallelujah Israel

Find 2 successive wins of Luxembourg

Pattern Variable

SELECT YEAR, WINNER, SONG, HOST FROM EUROVISION_WINNERSMATCH_RECOGNIZE (ORDER BY YEARALL ROWS PER MATCHPATTERN (LUX LUX)DEFINE LUX AS WINNER = 'Luxembourg'

)

1

LUX

order by

Page 12: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Find 2 successive wins of Luxembourg

SELECT YEAR, WINNER, SONG, HOST FROM EUROVISION_WINNERSMATCH_RECOGNIZE (ORDER BY YEARALL ROWS PER MATCHPATTERN (LUX LUX)DEFINE LUX AS WINNER = 'Luxembourg'

)

Page 13: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Find 2 successive wins of Luxembourg

SELECT YEAR, WINNER, SONG, HOST FROM EUROVISION_WINNERSMATCH_RECOGNIZE (ORDER BY YEARALL ROWS PER MATCHPATTERN (LUX{2})DEFINE LUX AS WINNER = 'Luxembourg'

)

Page 14: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

PATTERN Quantifiers

Pattern Number of consecutive occurrences

X 1

X{n} n

X{n,} n or more

X* 0 or more

X{n,m} between n and m

X{,m} between 0 and m

X? 0 or 1

X+ 1 or more

Page 15: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

YEAR WINNER SONG HOST1960 France Tom Pillibi United Kingdom1961 Luxembourg Nous les amoureux France1962 France Un premier amour Luxembourg1963 Denmark Dansevise United Kingdom1964 Italy Non ho l'età Denmark1965 Luxembourg Poupée de cire, poupée de son Italy1966 Austria Merci, Chérie Luxembourg1967 United Kingdom Puppet on a String Austria1968 Spain La, la, la United Kingdom1969 Netherlands De troubadour Spain1970 Ireland All Kinds of Everything Netherlands1971 Monaco Un banc, un arbre, une rue Ireland1972 Luxembourg Après toi United Kingdom1973 Luxembourg Tu te reconnaîtras Luxembourg1974 Sweden Waterloo United Kingdom1975 Netherlands Ding-a-dong Sweden1976 United Kingdom Save Your Kisses for Me Netherlands1977 France L'oiseau et l'enfant United Kingdom1978 Israel A-Ba-Ni-Bi France1979 Israel Hallelujah Israel

Find one or more successive wins of Luxembourg

Pattern Variable

SELECT YEAR, WINNER, SONG, HOST FROM EUROVISION_WINNERSMATCH_RECOGNIZE (ORDER BY YEARALL ROWS PER MATCHPATTERN (LUX+)DEFINE LUX AS WINNER = 'Luxembourg'

)

1

2

3

LUX

order by

Page 16: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT YEAR, WINNER, SONG, HOST FROM EUROVISION_WINNERSMATCH_RECOGNIZE (ORDER BY YEARALL ROWS PER MATCHPATTERN (LUX)DEFINE LUX AS WINNER = 'Luxembourg'

)

SELECT YEAR, WINNER, SONG, HOST FROM EUROVISION_WINNERSMATCH_RECOGNIZE (ORDER BY YEARALL ROWS PER MATCHPATTERN (LUX+)DEFINE LUX AS WINNER = 'Luxembourg'

)

Page 17: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

A match isa consecutive sequence

of(zero, one, or more)

records,that matches a specific pattern

Page 18: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT YEAR, WINNER, SONG, HOST FROM EUROVISION_WINNERSMATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (LUX)DEFINE LUX AS WINNER = 'Luxembourg'

)

SELECT YEAR, WINNER, SONG, HOST FROM EUROVISION_WINNERSMATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (LUX+)DEFINE LUX AS WINNER = 'Luxembourg'

)

Page 19: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT MATCH#, YEAR, WINNER, SONG, HOST FROM EUROVISION_WINNERSMATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (LUX)DEFINE LUX AS WINNER = 'Luxembourg'

)

SELECT MATCH#, YEAR, WINNER, SONG, HOST FROM EUROVISION_WINNERSMATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (LUX+)DEFINE LUX AS WINNER = 'Luxembourg'

)

Page 20: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

MATCH_RECOGNIZE

Page 21: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Input and Output

SELECT * FROM (SELECT YEAR, WINNER, SONG, PERFORMER, HOSTFROM EUROVISION_WINNERSWHERE YEAR BETWEEN 1990 AND 2000)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (I L UK?)DEFINE I AS WINNER LIKE 'I%',

LN AS LENGTH(SONG)>=18,UK AS HOST='United Kingdom'

);

Page 22: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Input and Output

SELECT * FROM (SELECT YEAR, WINNER, SONG, PERFORMER, HOSTFROM EUROVISION_WINNERSWHERE YEAR BETWEEN 1990 AND 2000)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (I L UK?)DEFINE I AS WINNER LIKE 'I%',

LN AS LENGTH(SONG)>=18,UK AS HOST='United Kingdom'

);

Page 23: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT * FROM (SELECT YEAR, WINNER, SONG, HOSTFROM EUROVISION_WINNERSWHERE YEAR BETWEEN 1990 AND 2000)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (I L UK?)DEFINE I AS WINNER LIKE 'I%',

LN AS LENGTH(SONG)>=18,UK AS HOST='United Kingdom'

);

Input and Output

Page 24: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT * FROM (SELECT YEAR, WINNER, SONG, HOSTFROM EUROVISION_WINNERSWHERE YEAR BETWEEN 1990 AND 2000)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (I L UK?)DEFINE I AS WINNER LIKE 'I%',

LN AS LENGTH(SONG)>=18,UK AS HOST='United Kingdom'

);

Input and Output

YEAR WINNER SONG HOST1990 Italy Insieme: 1992 Yugoslavia1991 Sweden Fångad av en stormvind Italy1992 Ireland Why Me? Sweden1993 Ireland In Your Eyes Ireland1994 Ireland Rock 'n' Roll Kids Ireland1995 Norway Nocturne Ireland1996 Ireland The Voice Norway1997 United Kingdom Love Shine a Light Ireland1998 Israel Diva United Kingdom1999 Sweden Take Me to Your Heaven Israel2000 Denmark Fly on the Wings of Love Sweden

Page 25: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Multiple Pattern Variables

YEAR WINNER SONG HOST1990 Italy Insieme: 1992 Yugoslavia1991 Sweden Fångad av en stormvind Italy1992 Ireland Why Me? Sweden1993 Ireland In Your Eyes Ireland1994 Ireland Rock 'n' Roll Kids Ireland1995 Norway Nocturne Ireland1996 Ireland The Voice Norway1997 United Kingdom Love Shine a Light Ireland1998 Israel Diva United Kingdom1999 Sweden Take Me to Your Heaven Israel2000 Denmark Fly on the Wings of Love Sweden

SELECT * FROM (SELECT YEAR, WINNER, SONG, HOSTFROM EUROVISION_WINNERSWHERE YEAR BETWEEN 1990 AND 2000)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (I LN UK?)DEFINE I AS WINNER LIKE 'I%',

LN AS LENGTH(SONG)>=18,UK AS HOST='United Kingdom'

);

order by

Page 26: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT * FROM (SELECT YEAR, WINNER, SONG, PERFORMER, HOSTFROM EUROVISION_WINNERSWHERE YEAR BETWEEN 1990 AND 2000)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (I LN UK?)DEFINE I AS WINNER LIKE 'I%',

LN AS LENGTH(SONG)>=18,UK AS HOST='United Kingdom'

);

Multiple Pattern Variables

YEAR WINNER SONG HOST1990 Italy Insieme: 1992 Yugoslavia1991 Sweden Fångad av en stormvind Italy1992 Ireland Why Me? Sweden1993 Ireland In Your Eyes Ireland1994 Ireland Rock 'n' Roll Kids Ireland1995 Norway Nocturne Ireland1996 Ireland The Voice Norway1997 United Kingdom Love Shine a Light Ireland1998 Israel Diva United Kingdom1999 Sweden Take Me to Your Heaven Israel2000 Denmark Fly on the Wings of Love Sweden

order by

Page 27: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT * FROM (SELECT YEAR, WINNER, SONG, PERFORMER, HOSTFROM EUROVISION_WINNERSWHERE YEAR BETWEEN 1990 AND 2000)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (I LN UK?)DEFINE I AS WINNER LIKE 'I%',

LN AS LENGTH(SONG)>=18,UK AS HOST='United Kingdom'

);

Multiple Pattern Variables

YEAR WINNER SONG HOST1990 Italy Insieme: 1992 Yugoslavia1991 Sweden Fångad av en stormvind Italy1992 Ireland Why Me? Sweden1993 Ireland In Your Eyes Ireland1994 Ireland Rock 'n' Roll Kids Ireland1995 Norway Nocturne Ireland1996 Ireland The Voice Norway1997 United Kingdom Love Shine a Light Ireland1998 Israel Diva United Kingdom1999 Sweden Take Me to Your Heaven Israel2000 Denmark Fly on the Wings of Love Sweden

I?

???

?

?

Pattern Variablesorder by

Page 28: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT * FROM (SELECT YEAR, WINNER, SONG, PERFORMER, HOSTFROM EUROVISION_WINNERSWHERE YEAR BETWEEN 1990 AND 2000)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (I LN UK?)DEFINE I AS WINNER LIKE 'I%',

LN AS LENGTH(SONG)>=18,UK AS HOST='United Kingdom'

);

Multiple Pattern Variables

YEAR WINNER SONG HOST1990 Italy Insieme: 1992 Yugoslavia1991 Sweden Fångad av en stormvind Italy1992 Ireland Why Me? Sweden1993 Ireland In Your Eyes Ireland1994 Ireland Rock 'n' Roll Kids Ireland1995 Norway Nocturne Ireland1996 Ireland The Voice Norway1997 United Kingdom Love Shine a Light Ireland1998 Israel Diva United Kingdom1999 Sweden Take Me to Your Heaven Israel2000 Denmark Fly on the Wings of Love Sweden

I?

???

?

?

LN

?

?

?

??

Pattern Variablesorder by

Page 29: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT * FROM (SELECT YEAR, WINNER, SONG, PERFORMER, HOSTFROM EUROVISION_WINNERSWHERE YEAR BETWEEN 1990 AND 2000)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (I LN UK?)DEFINE I AS WINNER LIKE 'I%',

LN AS LENGTH(SONG)>=18,UK AS HOST='United Kingdom'

);

Multiple Pattern Variables

YEAR WINNER SONG HOST1990 Italy Insieme: 1992 Yugoslavia1991 Sweden Fångad av en stormvind Italy1992 Ireland Why Me? Sweden1993 Ireland In Your Eyes Ireland1994 Ireland Rock 'n' Roll Kids Ireland1995 Norway Nocturne Ireland1996 Ireland The Voice Norway1997 United Kingdom Love Shine a Light Ireland1998 Israel Diva United Kingdom1999 Sweden Take Me to Your Heaven Israel2000 Denmark Fly on the Wings of Love Sweden

I?

???

?

?

LN

?

?

?

??

UK

?

Pattern Variablesorder by

Page 30: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

UKLNI

SELECT * FROM (SELECT YEAR, WINNER, SONG, PERFORMER, HOSTFROM EUROVISION_WINNERSWHERE YEAR BETWEEN 1990 AND 2000)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (I LN UK?)DEFINE I AS WINNER LIKE 'I%',

LN AS LENGTH(SONG)>=18,UK AS HOST='United Kingdom'

);

Multiple Pattern Variables

1

2

3

YEAR WINNER SONG HOST1990 Italy Insieme: 1992 Yugoslavia1991 Sweden Fångad av en stormvind Italy1992 Ireland Why Me? Sweden1993 Ireland In Your Eyes Ireland1994 Ireland Rock 'n' Roll Kids Ireland1995 Norway Nocturne Ireland1996 Ireland The Voice Norway1997 United Kingdom Love Shine a Light Ireland1998 Israel Diva United Kingdom1999 Sweden Take Me to Your Heaven Israel2000 Denmark Fly on the Wings of Love Sweden

Pattern Variablesorder by

Page 31: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

UKLNI

Multiple Pattern Variables

1

2

3

YEAR WINNER SONG HOST1990 Italy Insieme: 1992 Yugoslavia1991 Sweden Fångad av en stormvind Italy1992 Ireland Why Me? Sweden1993 Ireland In Your Eyes Ireland1994 Ireland Rock 'n' Roll Kids Ireland1995 Norway Nocturne Ireland1996 Ireland The Voice Norway1997 United Kingdom Love Shine a Light Ireland1998 Israel Diva United Kingdom1999 Sweden Take Me to Your Heaven Israel2000 Denmark Fly on the Wings of Love Sweden

Pattern Variablesorder by

SELECT * FROM (SELECT YEAR, WINNER, SONG, HOSTFROM EUROVISION_WINNERSWHERE YEAR BETWEEN 1990 AND 2000)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (I LN UK?)DEFINE I AS WINNER LIKE 'I%',

LN AS LENGTH(SONG)>=18,UK AS HOST='United Kingdom'

);

Page 32: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Find two or more successive wins of the same country

YEAR WINNER SONG HOST1977 France L'oiseau et l'enfant United Kingdom1978 Israel A-Ba-Ni-Bi France1979 Israel Hallelujah Israel1980 Ireland What's Another Year Netherlands1981 United Kingdom Making Your Mind Up Ireland1982 Germany Ein bißchen Frieden United Kingdom1983 Luxembourg Si la vie est cadeau Germany1984 Sweden Diggi-Loo Diggi-Ley Luxembourg1985 Norway La det swinge Sweden1986 Belgium J'aime la vie Norway1987 Ireland Hold Me Now Belgium1988 Switzerland Ne partez pas sans moi Ireland1989 Yugoslavia Rock Me Switzerland1990 Italy Insieme: 1992 Yugoslavia1991 Sweden Fångad av en stormvind Italy1992 Ireland Why Me? Sweden1993 Ireland In Your Eyes Ireland1994 Ireland Rock 'n' Roll Kids Ireland1995 Norway Nocturne Ireland

X SAME

SELECT MATCH#, YEAR, WINNER, SONG, HOSTFROM EUROVISION_WINNERSMATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() AS MATCH#

ALL ROWS PER MATCHPATTERN (X SAME+)DEFINE SAME AS WINNER = PREV(WINNER)

);

Implicit Pattern Variable

PREV

NEXT

Page 33: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Find returning winners after a breakYEAR WINNER SONG POINTS1971 Monaco Un banc, un arbre, une rue 1281972 Luxembourg Après toi 1281973 Luxembourg Tu te reconnaîtras 1291974 Sweden Waterloo 241975 Netherlands Ding-a-dong 1521976 United Kingdom Save Your Kisses for Me 1641977 France L'oiseau et l'enfant 1361978 Israel A-Ba-Ni-Bi 1571979 Israel Hallelujah 1251980 Ireland What's Another Year 1431981 United Kingdom Making Your Mind Up 1361982 Germany Ein bißchen Frieden 1611983 Luxembourg Si la vie est cadeau 1421984 Sweden Diggi-Loo Diggi-Ley 1451985 Norway La det swinge 1231986 Belgium J'aime la vie 1761987 Ireland Hold Me Now 1721988 Switzerland Ne partez pas sans moi 1371989 Yugoslavia Rock Me 1371990 Italy Insieme: 1992 1491991 Sweden Fångad av en stormvind 146

Page 34: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Find returning winners after a breakYEAR WINNER SONG POINTS1971 Monaco Un banc, un arbre, une rue 1281972 Luxembourg Après toi 1281973 Luxembourg Tu te reconnaîtras 1291974 Sweden Waterloo 241975 Netherlands Ding-a-dong 1521976 United Kingdom Save Your Kisses for Me 1641977 France L'oiseau et l'enfant 1361978 Israel A-Ba-Ni-Bi 1571979 Israel Hallelujah 1251980 Ireland What's Another Year 1431981 United Kingdom Making Your Mind Up 1361982 Germany Ein bißchen Frieden 1611983 Luxembourg Si la vie est cadeau 1421984 Sweden Diggi-Loo Diggi-Ley 1451985 Norway La det swinge 1231986 Belgium J'aime la vie 1761987 Ireland Hold Me Now 1721988 Switzerland Ne partez pas sans moi 1371989 Yugoslavia Rock Me 1371990 Italy Insieme: 1992 1491991 Sweden Fångad av en stormvind 146

SELECT MATCH#, YEAR, WINNER, SONG, POINTS, CLSFROM (SELECT * FROM EUROVISION_WINNERS

WHERE YEAR BETWEEN 1971 AND 1991)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,CLASSIFIER() CLS

ALL ROWS PER MATCHAFTER MATCH SKIP PAST LAST ROWPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY YEAR;

Page 35: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Find returning winners after a breakYEAR WINNER SONG POINTS1971 Monaco Un banc, un arbre, une rue 1281972 Luxembourg Après toi 1281973 Luxembourg Tu te reconnaîtras 1291974 Sweden Waterloo 241975 Netherlands Ding-a-dong 1521976 United Kingdom Save Your Kisses for Me 1641977 France L'oiseau et l'enfant 1361978 Israel A-Ba-Ni-Bi 1571979 Israel Hallelujah 1251980 Ireland What's Another Year 1431981 United Kingdom Making Your Mind Up 1361982 Germany Ein bißchen Frieden 1611983 Luxembourg Si la vie est cadeau 1421984 Sweden Diggi-Loo Diggi-Ley 1451985 Norway La det swinge 1231986 Belgium J'aime la vie 1761987 Ireland Hold Me Now 1721988 Switzerland Ne partez pas sans moi 1371989 Yugoslavia Rock Me 1371990 Italy Insieme: 1992 1491991 Sweden Fångad av en stormvind 146

SELECT MATCH#, YEAR, WINNER, SONG, POINTS, CLSFROM (SELECT * FROM EUROVISION_WINNERS

WHERE YEAR BETWEEN 1971 AND 1991)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,CLASSIFIER() CLS

ALL ROWS PER MATCHAFTER MATCH SKIP PAST LAST ROWPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY YEAR;

Page 36: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Find returning winners after a breakYEAR WINNER SONG POINTS1971 Monaco Un banc, un arbre, une rue 1281972 Luxembourg Après toi 1281973 Luxembourg Tu te reconnaîtras 1291974 Sweden Waterloo 241975 Netherlands Ding-a-dong 1521976 United Kingdom Save Your Kisses for Me 1641977 France L'oiseau et l'enfant 1361978 Israel A-Ba-Ni-Bi 1571979 Israel Hallelujah 1251980 Ireland What's Another Year 1431981 United Kingdom Making Your Mind Up 1361982 Germany Ein bißchen Frieden 1611983 Luxembourg Si la vie est cadeau 1421984 Sweden Diggi-Loo Diggi-Ley 1451985 Norway La det swinge 1231986 Belgium J'aime la vie 1761987 Ireland Hold Me Now 1721988 Switzerland Ne partez pas sans moi 1371989 Yugoslavia Rock Me 1371990 Italy Insieme: 1992 1491991 Sweden Fångad av en stormvind 146

SELECT MATCH#, YEAR, WINNER, SONG, POINTS, CLSFROM (SELECT * FROM EUROVISION_WINNERS

WHERE YEAR BETWEEN 1971 AND 1991)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,CLASSIFIER() CLS

ALL ROWS PER MATCHAFTER MATCH SKIP PAST LAST ROWPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY YEAR;

Page 37: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Find returning winners after a breakYEAR WINNER SONG POINTS1971 Monaco Un banc, un arbre, une rue 1281972 Luxembourg Après toi 1281973 Luxembourg Tu te reconnaîtras 1291974 Sweden Waterloo 241975 Netherlands Ding-a-dong 1521976 United Kingdom Save Your Kisses for Me 1641977 France L'oiseau et l'enfant 1361978 Israel A-Ba-Ni-Bi 1571979 Israel Hallelujah 1251980 Ireland What's Another Year 1431981 United Kingdom Making Your Mind Up 1361982 Germany Ein bißchen Frieden 1611983 Luxembourg Si la vie est cadeau 1421984 Sweden Diggi-Loo Diggi-Ley 1451985 Norway La det swinge 1231986 Belgium J'aime la vie 1761987 Ireland Hold Me Now 1721988 Switzerland Ne partez pas sans moi 1371989 Yugoslavia Rock Me 1371990 Italy Insieme: 1992 1491991 Sweden Fångad av en stormvind 146

SELECT MATCH#, YEAR, WINNER, SONG, POINTS, CLSFROM (SELECT * FROM EUROVISION_WINNERS

WHERE YEAR BETWEEN 1971 AND 1991)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,CLASSIFIER() CLS

ALL ROWS PER MATCHAFTER MATCH SKIP PAST LAST ROWPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY YEAR;

Page 38: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Find returning winners after a breakYEAR WINNER SONG POINTS1971 Monaco Un banc, un arbre, une rue 1281972 Luxembourg Après toi 1281973 Luxembourg Tu te reconnaîtras 1291974 Sweden Waterloo 241975 Netherlands Ding-a-dong 1521976 United Kingdom Save Your Kisses for Me 1641977 France L'oiseau et l'enfant 1361978 Israel A-Ba-Ni-Bi 1571979 Israel Hallelujah 1251980 Ireland What's Another Year 1431981 United Kingdom Making Your Mind Up 1361982 Germany Ein bißchen Frieden 1611983 Luxembourg Si la vie est cadeau 1421984 Sweden Diggi-Loo Diggi-Ley 1451985 Norway La det swinge 1231986 Belgium J'aime la vie 1761987 Ireland Hold Me Now 1721988 Switzerland Ne partez pas sans moi 1371989 Yugoslavia Rock Me 1371990 Italy Insieme: 1992 1491991 Sweden Fångad av en stormvind 146

SELECT MATCH#, YEAR, WINNER, SONG, POINTS, CLSFROM (SELECT * FROM EUROVISION_WINNERS

WHERE YEAR BETWEEN 1971 AND 1991)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,CLASSIFIER() CLS

ALL ROWS PER MATCHAFTER MATCH SKIP PAST LAST ROWPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY YEAR;

Page 39: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Find returning winners after a breakYEAR WINNER SONG POINTS1971 Monaco Un banc, un arbre, une rue 1281972 Luxembourg Après toi 1281973 Luxembourg Tu te reconnaîtras 1291974 Sweden Waterloo 241975 Netherlands Ding-a-dong 1521976 United Kingdom Save Your Kisses for Me 1641977 France L'oiseau et l'enfant 1361978 Israel A-Ba-Ni-Bi 1571979 Israel Hallelujah 1251980 Ireland What's Another Year 1431981 United Kingdom Making Your Mind Up 1361982 Germany Ein bißchen Frieden 1611983 Luxembourg Si la vie est cadeau 1421984 Sweden Diggi-Loo Diggi-Ley 1451985 Norway La det swinge 1231986 Belgium J'aime la vie 1761987 Ireland Hold Me Now 1721988 Switzerland Ne partez pas sans moi 1371989 Yugoslavia Rock Me 1371990 Italy Insieme: 1992 1491991 Sweden Fångad av en stormvind 146

SELECT MATCH#, YEAR, WINNER, SONG, POINTS, CLSFROM (SELECT * FROM EUROVISION_WINNERS

WHERE YEAR BETWEEN 1971 AND 1991)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,CLASSIFIER() CLS

ALL ROWS PER MATCHAFTER MATCH SKIP PAST LAST ROWPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY YEAR;

Page 40: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Find returning winners after a breakYEAR WINNER SONG POINTS1971 Monaco Un banc, un arbre, une rue 1281972 Luxembourg Après toi 1281973 Luxembourg Tu te reconnaîtras 1291974 Sweden Waterloo 241975 Netherlands Ding-a-dong 1521976 United Kingdom Save Your Kisses for Me 1641977 France L'oiseau et l'enfant 1361978 Israel A-Ba-Ni-Bi 1571979 Israel Hallelujah 1251980 Ireland What's Another Year 1431981 United Kingdom Making Your Mind Up 1361982 Germany Ein bißchen Frieden 1611983 Luxembourg Si la vie est cadeau 1421984 Sweden Diggi-Loo Diggi-Ley 1451985 Norway La det swinge 1231986 Belgium J'aime la vie 1761987 Ireland Hold Me Now 1721988 Switzerland Ne partez pas sans moi 1371989 Yugoslavia Rock Me 1371990 Italy Insieme: 1992 1491991 Sweden Fångad av en stormvind 146

SELECT MATCH#, YEAR, WINNER, SONG, POINTS, CLSFROM (SELECT * FROM EUROVISION_WINNERS

WHERE YEAR BETWEEN 1971 AND 1991)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,CLASSIFIER() CLS

ALL ROWS PER MATCHAFTER MATCH SKIP PAST LAST ROWPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY YEAR;

Page 41: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Find returning winners after a break

SELECT MATCH#, YEAR, WINNER, SONG, POINTS, CLSFROM (SELECT * FROM EUROVISION_WINNERS

WHERE YEAR BETWEEN 1971 AND 1991)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,CLASSIFIER() CLS

ALL ROWS PER MATCHAFTER MATCH SKIP PAST LAST ROWPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY YEAR;

Page 42: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT MATCH#, YEAR, WINNER, SONG, POINTS, CLSFROM (SELECT * FROM EUROVISION_WINNERS

WHERE YEAR BETWEEN 1971 AND 1991)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,CLASSIFIER() CLS

ALL ROWS PER MATCHAFTER MATCH SKIP PAST LAST ROWPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY YEAR;

Page 43: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT MATCH#, YEAR, WINNER, SONG, POINTS, VARFROM (SELECT * FROM EUROVISION_WINNERS

WHERE YEAR BETWEEN 1971 AND 1991)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,CLASSIFIER() VAR

ALL ROWS PER MATCHAFTER MATCH SKIP PAST LAST ROWPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY YEAR;

Page 44: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT MATCH#, YEAR, WINNER, SONG, POINTS, VARFROM (SELECT * FROM EUROVISION_WINNERS

WHERE YEAR BETWEEN 1971 AND 1991)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,CLASSIFIER() VAR

ALL ROWS PER MATCH WITH UNMATCHED ROWSAFTER MATCH SKIP PAST LAST ROWPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY YEAR;

Page 45: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT MATCH#, YEAR, WINNER, SONG, POINTS, VARFROM (SELECT * FROM EUROVISION_WINNERS

WHERE YEAR BETWEEN 1971 AND 1991)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,CLASSIFIER() VAR

ALL ROWS PER MATCH WITH UNMATCHED ROWSAFTER MATCH SKIP PAST LAST ROWPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY YEAR;

PAST LAST ROW (the default)TO NEXT ROWTO FIRST varTO [LAST] var

Page 46: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT MATCH#, YEAR, WINNER, SONG, POINTS, VARFROM (SELECT * FROM EUROVISION_WINNERS

WHERE YEAR BETWEEN 1971 AND 1991)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,CLASSIFIER() VAR

ALL ROWS PER MATCH WITH UNMATCHED ROWSAFTER MATCH SKIP TO FIRST DIFFPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY MATCH#, YEAR;

Page 47: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

SELECT MATCH#, YEAR, WINNER, SONG, POINTS, VARFROM (SELECT * FROM EUROVISION_WINNERS

WHERE YEAR BETWEEN 1971 AND 1991)MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,CLASSIFIER() VAR

ALL ROWS PER MATCH WITH UNMATCHED ROWSAFTER MATCH SKIP TO FIRST DIFFPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY MATCH#, YEAR;

FROM_YEAR

TO_YEAR

9

NON_WINNING_YEARS

WINNER

Page 48: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

FROM_YEAR

TO_YEAR

9

WINNER

SELECT MATCH#, WINNER, FROM_YEAR, TO_YEAR,NON_WINNER_YEARS

FROM (SELECT * FROM EUROVISION_WINNERS WHERE YEAR BETWEEN 1971 AND 1991)

MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,A.WINNER WINNER,FIRST(YEAR) FROM_YEAR,LAST(YEAR) TO_YEAR,COUNT(DIFF.*) NON_WINNER_YEARS

ONE ROW PER MATCHAFTER MATCH SKIP TO FIRST DIFFPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY MATCH#;

NON_WINNING_YEARS

Page 49: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

FROM_YEAR

TO_YEAR

9

WINNER

SELECT MATCH#, WINNER, FROM_YEAR, TO_YEAR,NON_WINNER_YEARS

FROM (SELECT * FROM EUROVISION_WINNERS WHERE YEAR BETWEEN 1971 AND 1991)

MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,A.WINNER WINNER,FIRST(YEAR) FROM_YEAR,LAST(YEAR) TO_YEAR,COUNT(DIFF.*) NON_WINNER_YEARS

ONE ROW PER MATCHAFTER MATCH SKIP TO FIRST DIFFPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY MATCH#;

NON_WINNING_YEARS

Page 50: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

FROM_YEAR

TO_YEAR

9

WINNER

SELECT MATCH#, WINNER, FROM_YEAR, TO_YEAR,NON_WINNER_YEARS

FROM (SELECT * FROM EUROVISION_WINNERS WHERE YEAR BETWEEN 1971 AND 1991)

MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,A.WINNER WINNER,FIRST(YEAR) FROM_YEAR,LAST(YEAR) TO_YEAR,COUNT(DIFF.*) NON_WINNER_YEARS

ONE ROW PER MATCHAFTER MATCH SKIP TO FIRST DIFFPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY MATCH#;

NON_WINNING_YEARS

Page 51: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

FROM_YEAR

TO_YEAR

9

WINNER

SELECT MATCH#, WINNER, FROM_YEAR, TO_YEAR,NON_WINNER_YEARS

FROM (SELECT * FROM EUROVISION_WINNERS WHERE YEAR BETWEEN 1971 AND 1991)

MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,A.WINNER WINNER,FIRST(YEAR) FROM_YEAR,LAST (YEAR) TO_YEAR,COUNT(DIFF.*) NON_WINNER_YEARS

ONE ROW PER MATCHAFTER MATCH SKIP TO FIRST DIFFPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY MATCH#;

NON_WINNING_YEARS

Page 52: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

FROM_YEAR

TO_YEAR

9

WINNER

SELECT MATCH#, WINNER, FROM_YEAR, TO_YEAR,NON_WINNER_YEARS

FROM (SELECT * FROM EUROVISION_WINNERS WHERE YEAR BETWEEN 1971 AND 1991)

MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,A.WINNER WINNER,FIRST(YEAR) FROM_YEAR,LAST (YEAR) TO_YEAR,COUNT(DIFF.*) NON_WINNER_YEARS

ONE ROW PER MATCHAFTER MATCH SKIP TO FIRST DIFFPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY MATCH#;

NON_WINNING_YEARS

COUNT

MAX

MIN

SUM

AVG

Page 53: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

FROM_YEAR

TO_YEAR

9

WINNER

SELECT MATCH#, WINNER, FROM_YEAR, TO_YEAR,NON_WINNER_YEARS

FROM (SELECT * FROM EUROVISION_WINNERS WHERE YEAR BETWEEN 1971 AND 1991)

MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,A.WINNER WINNER,FIRST(YEAR) FROM_YEAR,LAST (YEAR) TO_YEAR,COUNT(DIFF.*) NON_WINNER_YEARS

ONE ROW PER MATCHAFTER MATCH SKIP TO FIRST DIFFPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY MATCH#;

NON_WINNING_YEARS

Page 54: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

FROM_YEAR

TO_YEAR

9

WINNER

NON_WINNING_YEARS

SELECT MATCH#, WINNER, FROM_YEAR, TO_YEAR,NON_WINNER_YEARS

FROM (SELECT * FROM EUROVISION_WINNERS WHERE YEAR BETWEEN 1971 AND 1991)

MATCH_RECOGNIZE (ORDER BY YEARMEASURESMATCH_NUMBER() MATCH#,A.WINNER WINNER,FIRST(YEAR) FROM_YEAR,LAST (YEAR) TO_YEAR,COUNT(DIFF.*) NON_WINNER_YEARS

ONE ROW PER MATCHAFTER MATCH SKIP TO FIRST DIFFPATTERN (A SAME* DIFF+ LIKE_FIRST+)DEFINESAME AS WINNER = PREV(WINNER),DIFF AS WINNER != A.WINNER,LIKE_FIRST AS WINNER = A.WINNER

)ORDER BY MATCH#;

Page 55: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Fibonacci NumbersX123456789

10111213141516171819202122

F

SELECT * FROM (select rownum X from dual connect by level<=100)MATCH_RECOGNIZE (ORDER BY XMEASURESCLASSIFIER() AS F_OR_NOT

ALL ROWS PER MATCHPATTERN ( (F|NF)+ )DEFINE F AS (X = 1 OR

X = 2 OR X = LAST(F.X,1) + LAST(F.X,2))

);

Page 56: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Fibonacci NumbersX123456789

10111213141516171819202122

F

SELECT * FROM (select rownum X from dual connect by level<=100)MATCH_RECOGNIZE (ORDER BY XMEASURESCLASSIFIER() AS F_OR_NOT

ALL ROWS PER MATCHPATTERN ( (F|NF)+ )DEFINE F AS (X = 1 OR

X = 2 OR X = LAST(F.X,1) + LAST(F.X,2))

);

Page 57: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Fibonacci NumbersX123456789

10111213141516171819202122

F

SELECT * FROM (select rownum X from dual connect by level<=100)MATCH_RECOGNIZE (ORDER BY XMEASURESCLASSIFIER() AS F_OR_NOT

ALL ROWS PER MATCHPATTERN ( (F|NF)+ )DEFINE F AS (X = 1 OR

X = 2 OR X = LAST(F.X,1) + LAST(F.X,2))

);

Page 58: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Fibonacci NumbersX123456789

10111213141516171819202122

F

SELECT * FROM (select rownum X from dual connect by level<=100)MATCH_RECOGNIZE (ORDER BY XMEASURESCLASSIFIER() AS F_OR_NOT

ALL ROWS PER MATCHPATTERN ( (F|NF)+ )DEFINE F AS (X = 1 OR

X = 2 OR X = LAST(F.X,1) + LAST(F.X,2))

);

Page 59: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Fibonacci NumbersX123456789

10111213141516171819202122

F

SELECT * FROM (select rownum X from dual connect by level<=100)MATCH_RECOGNIZE (ORDER BY XMEASURESCLASSIFIER() AS F_OR_NOT

ALL ROWS PER MATCHPATTERN ( (F|NF)+ )DEFINE F AS (X = 1 OR

X = 2 OR X = LAST(F.X,1) + LAST(F.X,2))

);

NF

Implicit Pattern Variable

Page 60: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Fibonacci NumbersX123456789

10111213141516171819202122

F

SELECT * FROM (select rownum X from dual connect by level<=100)MATCH_RECOGNIZE (ORDER BY XMEASURESCLASSIFIER() AS F_OR_NOT

ALL ROWS PER MATCHPATTERN ( (F|NF)+ )DEFINE F AS (X = 1 OR

X = 2 OR X = LAST(F.X,1) + LAST(F.X,2))

);

Pattern

Alternation

NF

Implicit Pattern Variable

Page 61: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Fibonacci NumbersX123456789

10111213141516171819202122

F

SELECT * FROM (select rownum X from dual connect by level<=100)MATCH_RECOGNIZE (ORDER BY XMEASURESCLASSIFIER() AS F_OR_NOT

ALL ROWS PER MATCHPATTERN ( (F|NF)+ )DEFINE F AS (X = 1 OR

X = 2 OR X = LAST(F.X,1) + LAST(F.X,2))

);

Pattern

Grouping

NF

Implicit Pattern Variable

Page 62: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Fibonacci NumbersX123456789

10111213141516171819202122

F

SELECT * FROM (select rownum X from dual connect by level<=100)MATCH_RECOGNIZE (ORDER BY XMEASURESCLASSIFIER() AS F_OR_NOT

ALL ROWS PER MATCHPATTERN ( (F|NF)+ )DEFINE F AS (X = 1 OR

X = 2 OR X = LAST(F.X,1) + LAST(F.X,2))

);

NF

Implicit Pattern Variable

Page 63: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Fibonacci Numbers

SELECT * FROM (select rownum X from dual connect by level<=100)MATCH_RECOGNIZE (ORDER BY XMEASURESCLASSIFIER() AS F_OR_NOT

ALL ROWS PER MATCHPATTERN ( (F|NF)+ )DEFINE F AS (X = 1 OR

X = 2 OR X = LAST(F.X,1) + LAST(F.X,2))

);

Page 64: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Fibonacci Numbers

SELECT * FROM (select rownum X from dual connect by level<=100)MATCH_RECOGNIZE (ORDER BY XMEASURESCLASSIFIER() AS F_OR_NOT

ALL ROWS PER MATCHPATTERN ( (F|{-NF-})+ )DEFINE F AS (X = 1 OR

X = 2 OR X = LAST(F.X,1) + LAST(F.X,2))

);

Pattern

Exclusion

Page 65: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Fibonacci Numbers

SELECT * FROM (select rownum X from dual connect by level<=100)MATCH_RECOGNIZE (ORDER BY XMEASURESCLASSIFIER() AS F_OR_NOT

ALL ROWS PER MATCHPATTERN ( (F|{-NF-})+ )DEFINE F AS (X = 1 OR

X = 2 OR X = LAST(F.X,1) + LAST(F.X,2))

);

Page 66: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

© O

ren N

akdim

on

Additional Resources

The Documentation: https://docs.oracle.com/en/database/oracle/oracle-database/18/dwhsg/sql-pattern-matching-data-warehouses.html

Keith Laker’s blog: https://oracle-big-data.blogspot.com/

Stew Ashton’s blog: https://stewashton.wordpress.com/category/match_recognize/

Page 67: SQL Pattern Matching€¦ · 1968 Spain La, la, la Massiel 29 Spanish United Kingdom 1969 Netherlands De troubadour Lenny Kuhr 18 Dutch Spain 1970 Ireland All Kinds of Everything

THANK YOU

Oren Nakdimon

www.db-oriented.com

[email protected]

+972-54-4393763

@DBoriented