add example

This commit is contained in:
DanRoscigno 2022-08-05 13:23:53 -04:00
parent 23353c376f
commit 51928ebbac

View File

@ -638,3 +638,553 @@ Totals:
21 rows in set. Elapsed: 0.006 sec. 21 rows in set. Elapsed: 0.006 sec.
``` ```
```sql
CREATE TABLE servers ( datacenter VARCHAR(255),
distro VARCHAR(255) NOT NULL,
version VARCHAR(50) NOT NULL,
quantity INT
)
ORDER BY (datacenter, distro, version)
```
```sql
INSERT INTO servers(datacenter, distro, version, quantity)
VALUES ('Schenectady', 'Arch','2022.08.05',50),
('Westport', 'Arch','2022.08.05',40),
('Schenectady','Arch','2021.09.01',30),
('Westport', 'Arch','2021.09.01',20),
('Schenectady','Arch','2020.05.01',10),
('Westport', 'Arch','2020.05.01',5),
('Schenectady','RHEL','9',60),
('Westport','RHEL','9',70),
('Westport','RHEL','7',80),
('Schenectady','RHEL','7',80)
```
```sql
SELECT
*
FROM
servers;
```
```┌─datacenter──┬─distro─┬─version────┬─quantity─┐
│ Schenectady │ Arch │ 2020.05.01 │ 10 │
│ Schenectady │ Arch │ 2021.09.01 │ 30 │
│ Schenectady │ Arch │ 2022.08.05 │ 50 │
│ Schenectady │ RHEL │ 7 │ 80 │
│ Schenectady │ RHEL │ 9 │ 60 │
│ Westport │ Arch │ 2020.05.01 │ 5 │
│ Westport │ Arch │ 2021.09.01 │ 20 │
│ Westport │ Arch │ 2022.08.05 │ 40 │
│ Westport │ RHEL │ 7 │ 80 │
│ Westport │ RHEL │ 9 │ 70 │
└─────────────┴────────┴────────────┴──────────┘
10 rows in set. Elapsed: 0.409 sec.
```
```sql
SELECT
datacenter,
distro,
SUM (quantity) qty
FROM
servers
GROUP BY
datacenter,
distro;
```
```response
┌─datacenter──┬─distro─┬─qty─┐
│ Schenectady │ RHEL │ 140 │
│ Westport │ Arch │ 65 │
│ Schenectady │ Arch │ 90 │
│ Westport │ RHEL │ 150 │
└─────────────┴────────┴─────┘
4 rows in set. Elapsed: 0.212 sec.
```
```sql
SELECT
datacenter,
SUM (quantity) qty
FROM
servers
GROUP BY
datacenter;
```
```response
┌─datacenter──┬─qty─┐
│ Westport │ 215 │
│ Schenectady │ 230 │
└─────────────┴─────┘
2 rows in set. Elapsed: 0.277 sec.
```
```sql
SELECT
distro,
SUM (quantity) qty
FROM
servers
GROUP BY
distro;
```
```response
┌─distro─┬─qty─┐
│ Arch │ 155 │
│ RHEL │ 290 │
└────────┴─────┘
2 rows in set. Elapsed: 0.352 sec.
```
```sql
SELECT
SUM(quantity) qty
FROM
servers;
```
```response
┌─qty─┐
│ 445 │
└─────┘
1 row in set. Elapsed: 0.244 sec.
```
```sql
SELECT
datacenter,
distro,
SUM (quantity) qty
FROM
servers
GROUP BY
datacenter,
distro
UNION ALL
SELECT
datacenter,
null,
SUM (quantity) qty
FROM
servers
GROUP BY
datacenter
UNION ALL
SELECT
null,
distro,
SUM (quantity) qty
FROM
servers
GROUP BY
distro
UNION ALL
SELECT
null,
null,
SUM(quantity) qty
FROM
servers;
```
```response
┌─datacenter─┬─distro─┬─qty─┐
│ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 445 │
└────────────┴────────┴─────┘
┌─datacenter──┬─distro─┬─qty─┐
│ Westport │ ᴺᵁᴸᴸ │ 215 │
│ Schenectady │ ᴺᵁᴸᴸ │ 230 │
└─────────────┴────────┴─────┘
┌─datacenter──┬─distro─┬─qty─┐
│ Schenectady │ RHEL │ 140 │
│ Westport │ Arch │ 65 │
│ Schenectady │ Arch │ 90 │
│ Westport │ RHEL │ 150 │
└─────────────┴────────┴─────┘
┌─datacenter─┬─distro─┬─qty─┐
│ ᴺᵁᴸᴸ │ Arch │ 155 │
│ ᴺᵁᴸᴸ │ RHEL │ 290 │
└────────────┴────────┴─────┘
9 rows in set. Elapsed: 0.527 sec.
```
```sql
SELECT
datacenter,
distro,
SUM (quantity) qty
FROM
servers
GROUP BY
GROUPING SETS(
(datacenter,distro),
(datacenter),
(distro),
()
)
```
```response
┌─datacenter──┬─distro─┬─qty─┐
│ Schenectady │ RHEL │ 140 │
│ Westport │ Arch │ 65 │
│ Schenectady │ Arch │ 90 │
│ Westport │ RHEL │ 150 │
└─────────────┴────────┴─────┘
┌─datacenter──┬─distro─┬─qty─┐
│ Westport │ │ 215 │
│ Schenectady │ │ 230 │
└─────────────┴────────┴─────┘
┌─datacenter─┬─distro─┬─qty─┐
│ │ │ 445 │
└────────────┴────────┴─────┘
┌─datacenter─┬─distro─┬─qty─┐
│ │ Arch │ 155 │
│ │ RHEL │ 290 │
└────────────┴────────┴─────┘
9 rows in set. Elapsed: 0.427 sec.
```
```sql
SELECT
datacenter,
SUM (quantity) qty
FROM
servers
GROUP BY
datacenter;
```
```response
┌─datacenter──┬─qty─┐
│ Westport │ 215 │
│ Schenectady │ 230 │
└─────────────┴─────┘
2 rows in set. Elapsed: 0.318 sec.
```
```sql
SELECT
datacenter, SUM(quantity)
FROM
servers
GROUP BY datacenter;
```
```response
┌─datacenter──┬─sum(quantity)─┐
│ Westport │ 215 │
│ Schenectady │ 230 │
└─────────────┴───────────────┘
2 rows in set. Elapsed: 0.299 sec.
```
```sql
SELECT
datacenter, SUM(quantity)
FROM
servers
GROUP BY ROLLUP (datacenter);
```
```response
┌─datacenter──┬─sum(quantity)─┐
│ Westport │ 215 │
│ Schenectady │ 230 │
└─────────────┴───────────────┘
┌─datacenter─┬─sum(quantity)─┐
│ │ 445 │
└────────────┴───────────────┘
3 rows in set. Elapsed: 0.253 sec.
```
```sql
SELECT
datacenter, distro, SUM(quantity)
FROM
servers
GROUP BY datacenter, distro;
```
```response
┌─datacenter──┬─distro─┬─sum(quantity)─┐
│ Schenectady │ RHEL │ 140 │
│ Westport │ Arch │ 65 │
│ Schenectady │ Arch │ 90 │
│ Westport │ RHEL │ 150 │
└─────────────┴────────┴───────────────┘
4 rows in set. Elapsed: 0.328 sec.
```
```sql
SELECT
datacenter, distro, SUM(quantity)
FROM
servers
GROUP BY ROLLUP (datacenter , distro);
```
```response
┌─datacenter──┬─distro─┬─sum(quantity)─┐
│ Schenectady │ RHEL │ 140 │
│ Westport │ Arch │ 65 │
│ Schenectady │ Arch │ 90 │
│ Westport │ RHEL │ 150 │
└─────────────┴────────┴───────────────┘
┌─datacenter──┬─distro─┬─sum(quantity)─┐
│ Schenectady │ │ 230 │
│ Westport │ │ 215 │
└─────────────┴────────┴───────────────┘
┌─datacenter─┬─distro─┬─sum(quantity)─┐
│ │ │ 445 │
└────────────┴────────┴───────────────┘
7 rows in set. Elapsed: 0.408 sec.
```
```sql
SELECT
datacenter, distro, version, SUM(quantity)
FROM
servers
GROUP BY ROLLUP (datacenter , distro, version);
```
```response
┌─datacenter──┬─distro─┬─version────┬─sum(quantity)─┐
│ Westport │ RHEL │ 9 │ 70 │
│ Schenectady │ Arch │ 2022.08.05 │ 50 │
│ Schenectady │ Arch │ 2021.09.01 │ 30 │
│ Schenectady │ RHEL │ 7 │ 80 │
│ Westport │ Arch │ 2020.05.01 │ 5 │
│ Westport │ RHEL │ 7 │ 80 │
│ Westport │ Arch │ 2021.09.01 │ 20 │
│ Westport │ Arch │ 2022.08.05 │ 40 │
│ Schenectady │ RHEL │ 9 │ 60 │
│ Schenectady │ Arch │ 2020.05.01 │ 10 │
└─────────────┴────────┴────────────┴───────────────┘
┌─datacenter──┬─distro─┬─version─┬─sum(quantity)─┐
│ Schenectady │ Arch │ │ 90 │
│ Westport │ RHEL │ │ 150 │
│ Westport │ Arch │ │ 65 │
│ Schenectady │ RHEL │ │ 140 │
└─────────────┴────────┴─────────┴───────────────┘
┌─datacenter──┬─distro─┬─version─┬─sum(quantity)─┐
│ Schenectady │ │ │ 230 │
│ Westport │ │ │ 215 │
└─────────────┴────────┴─────────┴───────────────┘
┌─datacenter─┬─distro─┬─version─┬─sum(quantity)─┐
│ │ │ │ 445 │
└────────────┴────────┴─────────┴───────────────┘
17 rows in set. Elapsed: 0.355 sec.
```
```sql
SELECT
datacenter,
SUM(quantity)
FROM
servers
GROUP BY
datacenter;
```
```response
┌─datacenter──┬─sum(quantity)─┐
│ Westport │ 215 │
│ Schenectady │ 230 │
└─────────────┴───────────────┘
2 rows in set. Elapsed: 0.409 sec.
```
```sql
SELECT
datacenter,
SUM(quantity)
FROM
servers
GROUP BY
CUBE(datacenter)
ORDER BY
datacenter;
```
```response
┌─datacenter──┬─sum(quantity)─┐
│ │ 445 │
│ Schenectady │ 230 │
│ Westport │ 215 │
└─────────────┴───────────────┘
3 rows in set. Elapsed: 0.223 sec.
```
```sql
SELECT
datacenter,
distro,
version,
SUM(quantity)
FROM
servers
GROUP BY
datacenter,distro,version
ORDER BY
datacenter,
distro;
```
```response
┌─datacenter──┬─distro─┬─version────┬─sum(quantity)─┐
│ Schenectady │ Arch │ 2022.08.05 │ 50 │
│ Schenectady │ Arch │ 2021.09.01 │ 30 │
│ Schenectady │ Arch │ 2020.05.01 │ 10 │
│ Schenectady │ RHEL │ 7 │ 80 │
│ Schenectady │ RHEL │ 9 │ 60 │
│ Westport │ Arch │ 2020.05.01 │ 5 │
│ Westport │ Arch │ 2021.09.01 │ 20 │
│ Westport │ Arch │ 2022.08.05 │ 40 │
│ Westport │ RHEL │ 9 │ 70 │
│ Westport │ RHEL │ 7 │ 80 │
└─────────────┴────────┴────────────┴───────────────┘
10 rows in set. Elapsed: 0.211 sec.
```
```sql
SELECT
datacenter,
distro,
version,
SUM(quantity)
FROM
servers
GROUP BY
CUBE(datacenter,distro,version)
ORDER BY
datacenter,
distro;
```
```response
┌─datacenter──┬─distro─┬─version────┬─sum(quantity)─┐
│ │ │ 7 │ 160 │
│ │ │ 2020.05.01 │ 15 │
│ │ │ 2021.09.01 │ 50 │
│ │ │ 2022.08.05 │ 90 │
│ │ │ 9 │ 130 │
│ │ │ │ 445 │
│ │ Arch │ 2021.09.01 │ 50 │
│ │ Arch │ 2022.08.05 │ 90 │
│ │ Arch │ 2020.05.01 │ 15 │
│ │ Arch │ │ 155 │
│ │ RHEL │ 9 │ 130 │
│ │ RHEL │ 7 │ 160 │
│ │ RHEL │ │ 290 │
│ Schenectady │ │ 9 │ 60 │
│ Schenectady │ │ 2021.09.01 │ 30 │
│ Schenectady │ │ 7 │ 80 │
│ Schenectady │ │ 2022.08.05 │ 50 │
│ Schenectady │ │ 2020.05.01 │ 10 │
│ Schenectady │ │ │ 230 │
│ Schenectady │ Arch │ 2022.08.05 │ 50 │
│ Schenectady │ Arch │ 2021.09.01 │ 30 │
│ Schenectady │ Arch │ 2020.05.01 │ 10 │
│ Schenectady │ Arch │ │ 90 │
│ Schenectady │ RHEL │ 7 │ 80 │
│ Schenectady │ RHEL │ 9 │ 60 │
│ Schenectady │ RHEL │ │ 140 │
│ Westport │ │ 9 │ 70 │
│ Westport │ │ 2020.05.01 │ 5 │
│ Westport │ │ 2022.08.05 │ 40 │
│ Westport │ │ 7 │ 80 │
│ Westport │ │ 2021.09.01 │ 20 │
│ Westport │ │ │ 215 │
│ Westport │ Arch │ 2020.05.01 │ 5 │
│ Westport │ Arch │ 2021.09.01 │ 20 │
│ Westport │ Arch │ 2022.08.05 │ 40 │
│ Westport │ Arch │ │ 65 │
│ Westport │ RHEL │ 9 │ 70 │
│ Westport │ RHEL │ 7 │ 80 │
│ Westport │ RHEL │ │ 150 │
└─────────────┴────────┴────────────┴───────────────┘
39 rows in set. Elapsed: 0.355 sec.
```
:::note
Version in the above example may not make sense when it is not associated with a distro, if we were tracking the kernel version it might make sense because the kernel version can be associated with either distro. Using GROUPING SETS, as in the next example, may be a better choice.
:::
```sql
SELECT
datacenter,
distro,
version,
SUM(quantity)
FROM servers
GROUP BY
GROUPING SETS (
(datacenter, distro, version),
(datacenter, distro))
```
```response
┌─datacenter──┬─distro─┬─version────┬─sum(quantity)─┐
│ Westport │ RHEL │ 9 │ 70 │
│ Schenectady │ Arch │ 2022.08.05 │ 50 │
│ Schenectady │ Arch │ 2021.09.01 │ 30 │
│ Schenectady │ RHEL │ 7 │ 80 │
│ Westport │ Arch │ 2020.05.01 │ 5 │
│ Westport │ RHEL │ 7 │ 80 │
│ Westport │ Arch │ 2021.09.01 │ 20 │
│ Westport │ Arch │ 2022.08.05 │ 40 │
│ Schenectady │ RHEL │ 9 │ 60 │
│ Schenectady │ Arch │ 2020.05.01 │ 10 │
└─────────────┴────────┴────────────┴───────────────┘
┌─datacenter──┬─distro─┬─version─┬─sum(quantity)─┐
│ Schenectady │ RHEL │ │ 140 │
│ Westport │ Arch │ │ 65 │
│ Schenectady │ Arch │ │ 90 │
│ Westport │ RHEL │ │ 150 │
└─────────────┴────────┴─────────┴───────────────┘
14 rows in set. Elapsed: 1.036 sec.
```
```sql
SELECT
datacenter,
distro,
SUM(quantity)
FROM
servers
GROUP BY
CUBE(datacenter,distro)
ORDER BY
datacenter,
distro;
```
```response
┌─datacenter──┬─distro─┬─sum(quantity)─┐
│ │ │ 445 │
│ │ Arch │ 155 │
│ │ RHEL │ 290 │
│ Schenectady │ │ 230 │
│ Schenectady │ Arch │ 90 │
│ Schenectady │ RHEL │ 140 │
│ Westport │ │ 215 │
│ Westport │ Arch │ 65 │
│ Westport │ RHEL │ 150 │
└─────────────┴────────┴───────────────┘
9 rows in set. Elapsed: 0.206 sec.
```