| Height(in cms) | Weight(in kgs) | T Shirt Size |
|---|---|---|
| 158 | 58 | M |
| 158 | 59 | M |
| 158 | 63 | M |
| 160 | 59 | M |
| 160 | 60 | M |
| 163 | 61 | M |
| 160 | 64 | L |
| 163 | 64 | L |
| 165 | 61 | L |
| 165 | 62 | L |
| 165 | 65 | L |
| 168 | 62 | L |
| 168 | 63 | L |
| 168 | 66 | L |
| 170 | 63 | L |
| 170 | 64 | L |
| 170 | 68 | L |
$$d(x,y)=\sum{(x_i - y_i)^2}$$
New customer named 'Monica' has height 161cm and weight 61kg
| Height(in cms) | Weight(in kgs) | T Shirt Size | Distance | SrNO |
|---|---|---|---|---|
| 158 | 58 | M | 4.2 | |
| 158 | 59 | M | 3.6 | |
| 158 | 63 | M | 3.6 | |
| 160 | 59 | M | 2.2 | 3 |
| 160 | 60 | M | 1.4 | 1 |
| 163 | 61 | M | 2.2 | 3 |
| 160 | 64 | L | 2.0 | 2 |
| 163 | 64 | L | 3.2 | 5 |
| 165 | 61 | L | 3.6 | |
| 165 | 62 | L | 4.0 | |
| 165 | 65 | L | 4.1 | |
| 168 | 62 | L | 5.7 | |
| 168 | 63 | L | 7.1 | |
| 168 | 66 | L | 7.3 | |
| 170 | 63 | L | 8.6 | |
| 170 | 64 | L | 9.5 | |
| 170 | 68 | L | 11.4 |
DECLARE H INT64 DEFAULT 161;
DECLARE W INT64 DEFAULT 61;
WITH CTE AS(
SELECT Shop.Distance(Height, Weight, H, W) AS Dist, Size FROM Shop.TShirt ORDER BY Dist LIMIT 5
)
SELECT Size FROM CTE GROUP BY Size ORDER BY COUNT(*) DESC LIMIT 1;
CREATE OR REPLACE FUNCTION Shop.PredictKNN(H INT64, W INT64)
RETURNS STRING
AS(
(WITH CTE AS(
SELECT Shop.Distance(Height, Weight, H, W) AS Dist, Size FROM Shop.TShirt ORDER BY Dist LIMIT 5
)
SELECT Size FROM CTE GROUP BY Size ORDER BY COUNT(*) DESC LIMIT 1)
);