aboutsummaryrefslogtreecommitdiff
path: root/sem7/db/opg10.md
blob: 8fd951bd4170795251c2699c42e4dcfca236d8d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# Exercise 1

**A)** Hvis vi gerne må hente ting fra Shop, kan vi løse det med en join.

```sql
SELECT State, SUM(Count)
FROM TotalSales, Shop
WHERE TotalSales.ShopID = Shop.ShopID
GROUP BY State
```

**B)** Det kan vi ikke, da vi skal bruge MAX(price) hvilket man ikke kan få fra SUM(price).

**C)** Nej det kan vi ikke, fordi TotalSales ikke har DayID. Den har bare Total over altid.

**D)** Men den her kan vi godt.

```sql
SELECT State, Genre, SUM(Price), SUM(Count)
FROM TotalSales, Book, Shop
WHERE TotalSales.ShopID = Shop.ShopID AND TotalSales.BookID = Book.BookID
GROUP BY State, Genre
```

# Exercise 2

Gender=Male    : 1100101
Gender=Female  : 0011010
Office=London  : 1001100
Office=Glasgow : 0100010
Office=Cardiff : 0010001
Title=Dev      : 1010011
Title=Tester   : 0101000
Title=Man      : 0000100

**A)**

And 0011010 
med 1010011
  = 0010010

Så det er row 3, 6

**B)**

Not 0010001
  = 1101110

Så det er row 1, 2, 4, 5, 6

**C)**

And 1101110
med 0011010
  = 0001010

Så det er row 4, 6

**D)**

And 1010011
med 1001100
  = 1000000

Det er row 1

# Exercise 3

Det vil ikke give så meget mening at have 3000 forskellige indexes.
Hvis der for eksempel kun er 300 mennesker, vil det slet ikke give mening.

**B)**

[0;1000)   : 10100000
[1000;2000): 01001010
[2000;3000): 00010101

**C)**

Ja indexen kan hjælpe, men man skal have et refinement step.
Man starter med at finde alle i [1000;3000), også kan man sortere resten fra manuelt.

# Exercise 4

Step 0: A

B: 4 * 200 = 800
C: 4 * 520 = 2080
D: 4 * 100 = 400
E: 2 * 580 = 1160
F: 2 * 595 = 1190
G: 2 * 590 = 1180
H: 1 * 599 = 599
Step 1: C
Step 2: G
Step 3: B

Space: 600 + 80 + 10 + 400 = 1090
Time: 
A = 0
B = 0
C = 0
D = 600
E = 80
F = 80
G = 0
H = 10
Total: 600 + 80 + 80 + 10 = 770

# Exercise 5

**A)**

1(1)
2(1)
7(1)

**B)**

1(1)
2(1)
7(1)
3(2)

**C)**

1(1)
2(1)
7(1)
3(2)
4(1)

**D)**

1(1)
2(1)
3(2)
4(1)

# Exercise 6

**A)**
<g, sum, count>

alpha, 100, 3
beta,  40,  1
gamma, 25,  2
delta, 10,  1

**B)**

alpha, 100, 3
beta,  0,   2
gamma, 25,  2
delta, 10,  1

**C)**

alpha, 100, 3
beta,  0,   2
gamma, 35,  3
delta, 10,  1

**D)**

alpha, 100, 3
beta,  0,   2
gamma, 15,  1

**E)**

alpha, 100, 3
beta,  0,   2
gamma, 15,  1
epsilon, 0, 1

# Exercise 7

Gender=Male    : 1100101
Gender=Female  : 0011010
Office=London  : 1001100
Office=Glasgow : 0100010
Office=Cardiff : 0010001
Title=Dev      : 1010011
Title=Tester   : 0101000
Title=Man      : 0000100

Glasgow : 01,101
Man     : 11000
Male    : 00,00,100,01