powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Задача на 1 000 000 $
8 сообщений из 33, страница 2 из 2
Задача на 1 000 000 $
    #34131643
Фотография alexmsp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv alexmsp
Но я честно говоря так и не понял почему сервер разрешает использование COUNT(1) вместо COUNT(*). COUNT(1) - полная бессмыслица.

Поставьте там COUNT(*), если вам так этого хочется. Это все равно в данном конкретном случае.
( И в любом другом, если все поля NOT NULL и нет OUTER JOIN ).

Просто некоторые SQL-программисты любят писать вместо * - 1.
Можно писать в COUNT(*) вместо звездочки имя любимой девушки?
...
Рейтинг: 0 / 0
Задача на 1 000 000 $
    #34131798
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexmsp
Можно писать в COUNT(*) вместо звездочки имя любимой девушки?

Можно !! И я даже считаю - нужно !!
Можно туда например написать посвящение, типа "тебе, моя Валя" и т.п.
Только не очень длинное, разумеется.
...
Рейтинг: 0 / 0
Задача на 1 000 000 $
    #34131923
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexmspНаконец-то появилось время проверить все ваши варинты. Все действительно работают.
Про третий мы уже говорили - он совпал с моим и самый понятный и очевидный.

1ый и 2ой - коррелированные запросы, которые сложны для восприятия и далеко не очевидны.Пришлось сидеть и разбирать все по полкам. У меня вообще такое впечатление что эти варианты придумали либо извращенцы, либо профессионалы в SQL.
А вообще спасибо за информацию. Я думаю вообще эту задачу можно вынести в FAQ, потому как в разных вариантах она постояно поднимается на разнх форумах. И Вы, Анна, как постоянный посетитель форума и похоже прфессионально используете SQL - лучший кандидат для этой задачи.Видимо, всё это сугубо индивидуально. Помнится в свое время, впервые решая такую же задачу, я пришла изначально к решению №2. Затем, немного подумав, пришла к решению №3. Решение же №1 я вообще всегда использовала только для создания столбца-нумератора в запросе. Но, столкнувшись с тем, что не все сервера понимают подзапросы, адаптировала его под решаемую в этом топике задачу.

Что касается профессионалов или извращенцев, то я бы добавила ещё такие категории: извращённые профессионалы и профессиональные извращенцы

За признание профессионализма - спасибо. От предложения создать Ф.А.К. вежливо откажусь. Если хотите - можете взять эту задачу на себя. Я же со своей стороны могу лишь помочь в создании такого Ф.А.К.-а, но сама создавать его не буду - считаю себя недостаточно авторитетной для такого рода начинаний ;)
...
Рейтинг: 0 / 0
Задача на 1 000 000 $
    #34518532
pectopatop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select * from (select * from table order by score desc)g group by team_id
...
Рейтинг: 0 / 0
Задача на 1 000 000 $
    #34886847
aL MIR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pectopatop
Код: plaintext
select * from (select * from table order by score desc)g group by team_id
самый компактный вариант
...
Рейтинг: 0 / 0
Задача на 1 000 000 $
    #34887003
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aL MIR pectopatop
Код: plaintext
select * from (select * from table order by score desc)g group by team_id
самый компактный вариантНо самый неправильный с точки зрения идеалогии ANSI-SQL.
Кроме того, работать такое будет лишь на двух СУБД - MySQL и SyBase ASA.
...
Рейтинг: 0 / 0
Задача на 1 000 000 $
    #34887014
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бабичев Сергей aL MIR pectopatop
Код: plaintext
select * from (select * from table order by score desc)g group by team_id
самый компактный вариантНо самый неправильный с точки зрения идеалогии ANSI-SQL.
Кроме того, работать такое будет лишь на двух СУБД - MySQL и SyBase AS A .Опечатался. Выделенное читать как AS E
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Задача на 1 000 000 $
    #40136430
akiptenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сначала предлагаю пронумеровать участников внутри каждой команды,
select t.*, row_number() over (partition by t.team_id order by t.team_id, t.score desc) rn
from test_table t

затем взять всех учасников с rn=1 (самый богатый внутри команды)
select * from (select t.*, row_number() over (partition by t.team_id order by t.team_id, t.score desc) rn
from test_table t)
where rn=1
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Задача на 1 000 000 $
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]