Sortieren und Filtern

Einführung in SQL Server

John MacKintosh

Instructor

Schön der Reihe nach!

  • Tabellen bestehen aus Zeilen und Spalten

  • Abfragen geben Mengen oder Teilmengen zurück

  • Mengen haben keine bestimmte Reihenfolge

  • Wenn Reihenfolge wichtig ist: ORDER BY

Einführung in SQL Server
SELECT TOP (10) prod_id, year_intro 
FROM products 
-- Order in ascending order
ORDER BY year_intro, product_id;

+------------+-------------+ | product_id | year_intro | |------------+-------------| | 36 | 1981 | | 37 | 1982 | | 38 | 1983 | | 39 | 1984 | | 40 | 1984 | | 41 | 1984 | | 52 | 1985 | | 43 | 1986 | | 44 | 1987 | | 54 | 1987 | +------------+-------------+
Einführung in SQL Server
SELECT TOP (10) product_id, year_intro 
FROM products 
-- Order year_intro in descending order
ORDER BY year_intro DESC, product_id;

+------------+-------------+ | product_id | year_intro | |------------+-------------| | 158 | 2015 | | 173 | 2015 | | 170 | 2014 | | 171 | 2014 | | 172 | 2014 | | 144 | 2013 | | 146 | 2013 | | 147 | 2013 | | 148 | 2013 | | 149 | 2013 | +------------+-------------+
Einführung in SQL Server
SELECT 
  TOP (10) appearances, 
  year_intro 
FROM products 
-- Order in different directions
ORDER BY 
  year_intro DESC, 
  appearances;

+-------------+------------+ | appearances | year_intro | |-------------+------------| | 35 | 2015 | | 74 | 2015 | | 29 | 2014 | | 45 | 2014 | | 48 | 2014 | | 12 | 2013 | | 13 | 2013 | | 14 | 2013 | | 22 | 2013 | | 24 | 2013 | +-------------+------------+
SELECT 
  TOP (10) appearances, 
  year_intro 
FROM products 
-- Both columns in descending order
ORDER BY 
  year_intro DESC, 
  appearances DESC;

+-------------+------------+ | appearances | year_intro | |-------------+------------| | 74 | 2015 | | 35 | 2015 | | 48 | 2014 | | 45 | 2014 | | 29 | 2014 | | 837 | 2013 | | 642 | 2013 | | 561 | 2013 | | 491 | 2013 | | 198 | 2013 | +-------------+------------+
Einführung in SQL Server
SELECT city_id, name_alias
FROM invoice
-- Ordering text (Ascending order)
ORDER BY name_alias;

+-------------+----------------+ | city_id | name_alias | |-------------+----------------| | 48 | Amsterdam | | 59 | Bangalore | | 36 | Berlin | | 38 | Berlin | | 42 | Bordeaux | | 23 | Boston | | 13 | Brasília | | 8 | Brussels | | 45 | Budapest | | 56 | Buenos Aires | +-------------+----------------+
SELECT city_id, name_alias 
FROM invoice
-- Ordering text (Descending order)
ORDER BY name_alias DESC;

+-------------+----------------+ | city_id | name_alias | |-------------+----------------| | 33 | Yellowknife | | 32 | Winnipeg | | 49 | Warsaw | | 7 | Vienne | | 15 | Vancouver | | 27 | Tucson | | 29 | Toronto | | 2 | Stuttgart | | 51 | Stockholm | | 55 | Sydney | +-------------+----------------+
Einführung in SQL Server

Was, wenn wir nur Zeilen zurückgeben wollen, die bestimmte Kriterien erfüllen?

SELECT customer_id, total
FROM invoice 
WHERE total > 15;

Die ersten 3 Personen mit einem Rechnungswert > 15

+-------------+------------+
| customer_id | total      |
|-------------+------------|
| 57          | 17.91      |
|  7          | 18.86      |
| 45          | 21.86      |
+-------------+------------+
Einführung in SQL Server
-- Rows with points greater than 10
WHERE points > 10

-- Rows with points less than 10
WHERE points  < 10

-- Rows with points greater than or equal to 10
WHERE points >= 10

-- Rows with points less than or equal to 20
WHERE points  <= 20

-- Character data type WHERE country = 'Spain' -- Date data type WHERE event_date = '2012-01-02'
Einführung in SQL Server
SELECT customer_id, total 
FROM invoice 
-- Testing for non-equality
WHERE total <> 10; 
+------------+-------+
| customer_id | total |
|------------+-------|
| 2          | 1.98  |
| 4          | 3.96  |
| 8          | 5.94  |
| 14         | 8.91  |
| 23         | 13.86 |
| 37         | 0.99  |
+------------+-------+
Einführung in SQL Server

BETWEEN

SELECT customer_id, total 
FROM invoice 
WHERE total BETWEEN 20 AND 30;
+------------+--------+
| customer_id | total  |
|------------+--------|
| 45         | 21.86  |
| 46         | 21.86  |
| 26         | 23.86  |
| 6          | 25.86  |
+------------+--------+
SELECT customer_id, total 
FROM invoice 
WHERE total NOT BETWEEN 20 AND 30;
+------------+--------+
| customerid | total  |
|------------+--------|
|  2         | 1.98   |
|  4         | 3.96   |
|  8         | 5.94   |
| 14         | 8.91   |
+------------+--------+
Einführung in SQL Server

Was ist NULL?

  • NULL zeigt an, dass es keinen Wert für diesen Datensatz gibt.
  • NULL-Werte helfen, Lücken in unseren Daten zu erkennen.
Einführung in SQL Server
SELECT 
  TOP (6) total, 
  billing_state 
FROM invoice 
WHERE billing_state IS NULL;
+-------+---------------+
| total | billing_state |
|-------+---------------|
| 1.98  | NULL          |
| 3.96  | NULL          |
| 5.94  | NULL          |
| 0.99  | NULL          |
| 1.98  | NULL          |
| 1.98  | NULL          |
+-------+---------------+
SELECT 
  TOP (6) total, 
  billing_state 
FROM invoice 
WHERE billing_state IS NOT NULL;
+--------+---------------+
| total  | billing_state |
|--------+---------------|
|  8.91  | AB            |
| 13.96  | MA            |
|  5.94  | Dublin        |
|  0.99  | CA            |
|  1.98  | WA            |
|  1.98  | CA            |
+-------+----------------+
Einführung in SQL Server

Lass uns üben!

Einführung in SQL Server

Preparing Video For Download...