Porównywanie rekordów - jak to ugryźć, Zaawansowane zapytanie SQL |
Porównywanie rekordów - jak to ugryźć, Zaawansowane zapytanie SQL |
3.04.2014, 11:03:07
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 4.09.2013 Ostrzeżenie: (0%) |
Witam ponownie,
Od kilku dni próbuję rozwiązać następujące zagadnienie: Dane: Dane wstępnie obrobione tzn. tak aby łatwiej było wytłumaczyć. Zadanie: Znaleźć zakupy (ID definiuje zakup), które są podobne do siebie. Czy też znaleźć pary ID, które mają ze sobą coś wspólnego. Najprościej jest odnaleźć takie same, czyli w załączonym przykładzie ID 1 = ID 4 nieco trudniej stwierdzić, że np. ID 6 ma sporo wspólnego z ID 7 różnią się tylko o 4 Gruszki lub ID 3 od ID 4 różnią się o jedno jabłko. Właśnie nad zrealizowaniem części drugiej (po nieco trudniej) główkuję i jak na razie z mizernym rezultatem? Gdyby któryś z Forumowiczów mógł skierować Mnie na nowe tory myślenia, będę zobowiązany. Pozdrawiam Morf Ten post edytował Morfina 3.04.2014, 11:05:54 |
|
|
4.04.2014, 01:13:44
Post
#2
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%) |
Skoro interesują nas wszystkie możliwe pary rekordów to w najgorszym przypadku będziemy mieć iloczyn kartezjanski przy self-joinie, ale możemy to nieco uprościć. Zakładając, że dwa rekordy są podobne jeżeli dla tego samego owocu mają taką samą ilość, to możemy dodać to jako warunek złączenia. W ten sposób pomijamy wszystkie pary, które nie mają ze sobą nic wspólnego a także dostajemy dane w formacie dość wygodnym do pogrupowania, bo wystarczy w każdej grupie dla identycznych par ID policzyć rekordy i otrzymujemy liczbę zgodnych pozycji zakupów. Czyli:
|
|
|
4.04.2014, 11:53:38
Post
#3
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 4.09.2013 Ostrzeżenie: (0%) |
Kolego Pmir13 Wielkie Dzięki.
Jak dla mnie Mistrzostwo Świata, na to bym nie wpadł.
Tak wygląda wersja finalna. |
|
|
Wersja Lo-Fi | Aktualny czas: 20.04.2024 - 04:25 |