Patent na usuwanie duplikatów z tabeli “in
place” tj bez nadpisywania jej, bez usuwania i wstawiania innej:
Do przetestowania:
Kolumny ID (nie powtarza się). imie,
nazwisko, dane (może duplikować się).
DELETE
*
FROM Tabela1
WHERE [id] NOT IN
(SELECT Max(Tabela1.id) AS id
FROM Tabela1
GROUP BY Tabela1.imie, Tabela1.nazwisko, Tabela1.dane);
FROM Tabela1
WHERE [id] NOT IN
(SELECT Max(Tabela1.id) AS id
FROM Tabela1
GROUP BY Tabela1.imie, Tabela1.nazwisko, Tabela1.dane);
w linii GROUP BY można określić gdzie
szukamy duplikatów, w jakich kolumnach
Select Max... można użyć First(), albo Min(), żeby określić, które zduplikowane rekordy zachować.
Select Max... można użyć First(), albo Min(), żeby określić, które zduplikowane rekordy zachować.
Są trzy tabele
1. Studenci (_indeks_, imie, nazwisko)
2. Kursy (_id_, tytul, godzin, punktow), gdzie punktow oznacza ile punktow za zaliczenie kursu się dostaje
3. Szkolenia( osoba, kurs, zaliczenie) gdzie osoba to numer indeksu studenta, zaliczenie to data zaliczenia, a kurs to numer kursu
i pierwsze zadanie z matury brzmi: Ilu studentów zaliczyło w pierwszym terminie? (do 30 czerwca 2016)<pre>
Select count([_indeks_Stud]) AS ilu_zdalo From
(Select [Studenci$].[_indeks_Stud]
From ([Kursy$]
Inner Join [Szkolenia$] On [Kursy$].[_id_kurs] = [Szkolenia$].kurs)
Inner Join [Studenci$] On [Studenci$].[_indeks_Stud] = [Szkolenia$].osoba
Where [Szkolenia$].zaliczenie <= #2016-06-30#
Group By [Studenci$].[_indeks_Stud]
Having Sum([Kursy$].punktow) >= 15)
<./pre>
Kod powstał w ide Flyspeed SQL Query na bazie stworzonej w zakładkach w Excelu, stąd znaki dolara.... kod więc powinien działać po wklejeniu do Microsoft Query.
Brak komentarzy:
Prześlij komentarz