Выберите 5 спортивных дисциплин, в которых проводится менее спортивное мероприятие - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть этот спортивный стол:

CREATE TABLE Sports(
    name_sport VARCHAR(50) PRIMARY KEY,
    categories_sport VARCHAR(50),
    type_result_sport VARCHAR(50),
    discipline TEXT,
    enEquipe BOOLEAN 
);

, который я заполнил данными типа:

('Women''s 50m Freestyle','freestyle','aquatics','temps','FALSE'),

('Trap Women','shooting','shooting','temps','FALSE'),
('10m Air Pistol Men','shooting','shooting','score','FALSE'),
('10m Air Rifle Men','shooting','shooting','score','FALSE'),

('Women''s Discus Throw','throws','athletics','score','FALSE'),
('Women''s Hammer Throw','throws','athletics','score','FALSE'),
('Women''s Javelin Throw','throws','athletics','score','FALSE'),
('Men''s 100m','track','athletics','temps','FALSE'),

('Women''s Doubles','badminton','badminton','temps','TRUE'),
('Women''s Singles','badminton','badminton','temps','FALSE'),
('Men''s Doubles','badminton','badminton','temps','TRUE'),
('Men''s Singles','badminton','badminton','temps','FALSE'),

('Lightweight Women''s Double Sculls','rowing','rowing','temps','FALSE'),
('Women''s Double Sculls','rowing','rowing','temps','FALSE'),
('Women''s Eight','rowing','rowing','temps','FALSE'),
('Women''s Pair','rowing','rowing','temps','FALSE'),
('Women''s Quadruple Sculls','rowing','rowing','temps','FALSE'),
('Women''s Single Sculls','rowing','rowing','temps','FALSE'),
('Lightweight Men''s Double Sculls','rowing','rowing','temps','FALSE'),
('Lightweight Men''s Four','rowing','rowing','temps','FALSE'), 

('Women''s +75kg','weightlifting','weightlifting','score','FALSE'),
('Women''s 48kg','weightlifting','weightlifting','score','FALSE'),
('Women''s 53kg','weightlifting','weightlifting','score','FALSE'),
('Women''s 58kg','weightlifting','weightlifting','score','FALSE'),
('Women''s 63kg','weightlifting','weightlifting','score','FALSE'),
('Women''s 69kg','weightlifting','weightlifting','score','FALSE'),
('Women''s 75kg','weightlifting','weightlifting','score','FALSE'),
('Men''s +105kg','weightlifting','weightlifting','score','FALSE'),
('Men''s 105kg','weightlifting','weightlifting','score','FALSE'),
('Men''s 56kg','weightlifting','weightlifting','score','FALSE'),
('Men''s 62kg','weightlifting','weightlifting','score','FALSE'),
('Men''s 69kg','weightlifting','weightlifting','score','FALSE'),
('Men''s 77kg','weightlifting','weightlifting','score','FALSE'),
('Men''s 85kg','weightlifting','weightlifting','score','FALSE'),
('Men''s 94kg','weightlifting','weightlifting','score','FALSE'),

Я пытаюсь выбрать 5 категорий (водный спорт, легкая атлетика, стрельба из лука)...) которые имеют менее спортивное событие (100 м для мужчин, 50 м вольным стилем ...)

В этом случае результат будет:

Aquatics
Athletics
Shooting
badminton
rowing

Спасибо

РЕДАКТИРОВАТЬ 1: Добавлены дополнительные образцы данных и требуется вывод.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Требуется агрегированный запрос с GROUP BY categories_sport, отсортированным по возрастанию и с предложением LIMIT по 5 результатам.

Это будет работать как в mysql, так и в postgres (вы пометили оба):

SELECT categories_sport, count(*)
FROM sports
GROUP BY categories_sport
ORDER BY COUNT(*) 
LIMIT 5
0 голосов
/ 16 декабря 2018

пожалуйста, попробуйте это.группировка по категориям групп операторов, результаты по заказам по количеству вхождений в каждой категории и ограничение количества возвращаемых результатов до 5

 select categories_sport, count(*) as cnt
   from Sports
  group by (categories_sport)
  order by cnt asc
  limit 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...