Przykłady zapytań SQL
Na stronie tej umieściliśmy różnego rodzaju zapytania SQL, które utworzone zostały na życzenie użytkowników. Myślimy, że mogą być one pomocne również innym użytkownikom. Prosimy zaglądać na tę stronę, gdyż publikować będziemy, pojawiące się w przyszłości, nowe i niemniej ciekawe przykłady.
Znajdź sumę długości sieci ciepłowniczej dla wszystkich średnic.
SELECT gałęzie.d, SUM(gałęzie.l)
FROM gałęzie
GROUP BY gałęzie.d
Znajdź sumę długości sieci ciepłowniczej o danej średnicy (np. 50 mm).
SELECT gałęzie.d, SUM(gałęzie.l)
FROM gałęzie
WHERE gałęzie.d = 50
GROUP BY gałęzie.d
Znajdź sumę długości sieci ciepłowniczej dla sieci preizolownych wg typu rury.
SELECT gałęzie.d, gałęzie.typ, SUM(gałęzie.l)
FROM gałęzie
WHERE gałęzie.tech IN ('P', 'R', 'A')
GROUP BY gałęzie.d, gałęzie.typ
ORDER BY gałęzie.d
Sporządź zestawienie mocy cieplnej z podziałem na kategorie dla wszystkich węzłów cieplnych danego rodzaju (np. 'W').
Uwaga: tutaj ma miejsce denormalizacja tablicy.
SELECT węzły_cieplne.rodz_wez_co,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'co'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as co,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'cw'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as cw,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'wen'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as wen,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'tech'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as tech,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'klim'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as klim
FROM węzły_cieplne
JOIN węzły_cieplne_potrzeby ON węzły_cieplne.numer = węzły_cieplne_potrzeby.numer
WHERE węzły_cieplne.rodz_wez_co = 'W'
GROUP BY węzły_cieplne.rodz_wez_co
Sporządź wykaz wszystkich węzłów danego rodzaju (np. 'W') z numerem, nazwą, adresem i zapotrzebowaniem ciepła wg klasyfikacji terenowej.
SELECT węzły_cieplne.numer, węzły_cieplne.nazwa, węzły_cieplne.adres,
węzły_cieplne.rodz_wez_co, węzły_cieplne.kt,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'co'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as co,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'cw'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as cw,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'wen'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as wen,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'tech'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as tech,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'klim'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as klim
FROM węzły_cieplne
JOIN węzły_cieplne_potrzeby ON węzły_cieplne.numer = węzły_cieplne_potrzeby.numer
WHERE węzły_cieplne.rodz_wez_co = 'W'
GROUP BY węzły_cieplne.numer, węzły_cieplne.nazwa, węzły_cieplne.adres,
węzły_cieplne.rodz_wez_co, węzły_cieplne.kt
ORDER BY węzły_cieplne.kt
Sporządź wykaz wszystkich budynków z numerem, nazwą, adresem, potrzebami ciepła i rodzajem węzła wg klasyfikacji urbanistycznej.
SELECT węzły_cieplne.numer, węzły_cieplne.nazwa, węzły_cieplne.adres,
węzły_cieplne.rodz_wez_co, węzły_cieplne.ku,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'co'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as co,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'cw'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as cw,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'wen'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as wen,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'tech'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as tech,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'klim'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as klim
FROM węzły_cieplne
JOIN węzły_cieplne_potrzeby ON węzły_cieplne.numer = węzły_cieplne_potrzeby.numer
GROUP BY węzły_cieplne.numer, węzły_cieplne.nazwa, węzły_cieplne.adres,
węzły_cieplne.rodz_wez_co, węzły_cieplne.ku
ORDER BY węzły_cieplne.ku
Sporządź wykaz wszystkich budynków z numerem, nazwą, adresem i potrzebami ciepła wg klasyfikacji urbanistycznej dla danego rodzaju węzła (np. 'W').
SELECT węzły_cieplne.numer, węzły_cieplne.nazwa, węzły_cieplne.adres,
węzły_cieplne.rodz_wez_co, węzły_cieplne.ku,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'co'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as co,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'cw'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as cw,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'wen'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as wen,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'tech'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as tech,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'klim'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as klim
FROM węzły_cieplne
JOIN węzły_cieplne_potrzeby ON węzły_cieplne.numer = węzły_cieplne_potrzeby.numer
WHERE węzły_cieplne.rodz_wez_co = 'W'
GROUP BY węzły_cieplne.numer, węzły_cieplne.nazwa, węzły_cieplne.adres,
węzły_cieplne.rodz_wez_co, węzły_cieplne.ku
ORDER BY węzły_cieplne.ku
Sporządź wykaz wszystkich budynków z numerem, nazwą, adresem i potrzebami ciepła, gdzie nazwa zaczyna się od "wymiennikownia grupowa".
SELECT węzły_cieplne.numer, węzły_cieplne.adres, węzły_cieplne.nazwa,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'co'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as co,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'cw'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as cw,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'wen'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as wen,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'tech'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as tech,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'klim'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as klim
FROM węzły_cieplne
JOIN węzły_cieplne_potrzeby ON węzły_cieplne.numer = węzły_cieplne_potrzeby.numer
WHERE LOWER(węzły_cieplne.nazwa) LIKE 'wymiennikownia grupowa%'
GROUP BY węzły_cieplne.numer, węzły_cieplne.adres, węzły_cieplne.nazwa
Sporządź zestawienie mocy cieplnej budynków z numerem, nazwą i adresem należących do danego właściciela (np. 'SMLW').
Uwaga: zapytanie to zawiera podzapytanie i dlatego może chodzić dość długo.
SELECT węzły_cieplne.numer, węzły_cieplne.nazwa, węzły_cieplne.adres,
węzły_cieplne.właścicielid,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'co'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as co,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'cw'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as cw,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'wen'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as wen,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'tech'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as tech,
SUM(CASE
WHEN węzły_cieplne_potrzeby.obieg = 'klim'
THEN węzły_cieplne_potrzeby.q
ELSE 0.0
END) as klim
FROM węzły_cieplne
JOIN węzły_cieplne_potrzeby ON węzły_cieplne.numer = węzły_cieplne_potrzeby.numer
WHERE węzły_cieplne.właścicielid IN
(SELECT właściciele.id FROM właściciele
WHERE właściciele.nazwa = 'SMLW')
GROUP BY węzły_cieplne.numer, węzły_cieplne.nazwa, węzły_cieplne.adres,
węzły_cieplne.właścicielid
Sporządź wykaz wszystkich budynków z numerem, nazwą i adresem, które nie mają potrzeb cieplnych.
Uwaga: zapytanie to zawiera podzapytanie i dlatego może chodzić dość długo.
SELECT węzły_cieplne.numer, węzły_cieplne.nazwa, węzły_cieplne.adres
FROM węzły_cieplne
WHERE węzły_cieplne.numer NOT IN
(SELECT węzły_cieplne_potrzeby.numer
FROM węzły_cieplne_potrzeby)
ORDER BY węzły_cieplne.numer
Sporządź wykaz wszystkich budynków z numerem, nazwą i adresem, które nie mają potrzeb cieplnych dla ciepłej wody.
Uwaga: zapytanie to zawiera podzapytanie i dlatego może chodzić dość długo.
SELECT węzły_cieplne.numer, węzły_cieplne.nazwa, węzły_cieplne.adres
FROM węzły_cieplne
WHERE węzły_cieplne.numer NOT IN
(SELECT węzły_cieplne_potrzeby.numer
FROM węzły_cieplne_potrzeby
WHERE węzły_cieplne_potrzeby.obieg = 'cw')
ORDER BY węzły_cieplne.numer
Znajdź wszystkie rodzaje klasyfikacji urbanistycznej występujące w węzłach cieplnych posortowane rosnąco.
SELECT DISTINCT węzły_cieplne.ku
FROM węzły_cieplne
ORDER BY węzły_cieplne.ku
Znajdź wszystkie rodzaje klasyfikacji urbanistycznej nie występujące w węzłach cieplnych posortowane rosnąco.
SELECT klasyfikacja_urbanistyczna.klasyfikacja
FROM klasyfikacja_urbanistyczna
WHERE klasyfikacja_urbanistyczna.klasyfikacja NOT IN
(SELECT DISTINCT węzły_cieplne.ku
FROM węzły_cieplne)
ORDER BY klasyfikacja_urbanistyczna.klasyfikacja
We wszystkich gałęziach wykonanych w technologii kanałowej zmień chropowatość na równą 0,7.
UPDATE Gałęzie SET k=0.7
WHERE tech = 'K'
Znajdź liczbę węzłów cieplnych zwykłych, grupowych, zbiorczych i strefowych.
SELECT COUNT(*) FROM Węzły_cieplne
WHERE Węzły_cieplne.char_wez NOT IN ('R', 'I')
Znajdź sumę długości przyłączy (czyli gałęzi, które mają przyłączone węzły cieplne) dla wszystkich średnic.
SELECT Gałęzie.d, SUM(Gałęzie.l) FROM Gałęzie
WHERE (SUBSTRING(Gałęzie.numer FROM 1 FOR 9) IN
(SELECT DISTINCT SUBSTRING(Węzły_cieplne.numer FROM 1 FOR 9) FROM Węzły_cieplne)) OR
(SUBSTRING(Gałęzie.numer FROM 11 FOR 9) IN
(SELECT DISTINCT SUBSTRING(Węzły_cieplne.numer FROM 1 FOR 9) FROM Węzły_cieplne))
GROUP BY Gałęzie.d