170 похожих чатов

Народ, у меня паранойя. То ли взгляд замылен, то ли

я чего-то не понимаю.
Есть тестовая таблица status_log:
CREATE TABLE `status_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`rank` int(11) DEFAULT 50,
)
Заполняю её данными.

Делаю select:
select id,rank as rank,(rand()*100) as thres from status_log where rank = 50
Получаю 66 тысяч записей
| 6575236 | 50 | 80.0029963068692 |
| 6575286 | 50 | 34.903977657578864 |
| 6575476 | 50 | 34.51090244065123 |
| 6575511 | 50 | 67.84258230388404 |
| 6575589 | 50 | 35.68020727083106 |
| 6575644 | 50 | 74.87329251586766 |
| 6575723 | 50 | 67.32584384020961 |
| 6575771 | 50 | 12.009344726809621 |
| 6575863 | 50 | 58.06919518678374 |
+---------+------+-----------------------+
66169 rows in set (2.502 sec).

Теперь решаю отфильтровать по пороговому значению:
select * from (select id,rank as rank,(rand()*100) as thres from status_log where rank = 50) t where thres>rank order by thres;

Казалось бы, результатов должно быть в среднем 33000. Но нет, их в 2 раза меньше:

| 6320116 | 50 | 99.96190201487569 |
| 1042844 | 50 | 99.96344596144134 |
| 331390 | 50 | 99.96392289173224 |
| 6381040 | 50 | 99.97539855537508 |
| 3049964 | 50 | 99.97666422275515 |
| 3986559 | 50 | 99.9775216914504 |
| 2427419 | 50 | 99.978287797401 |
| 4396732 | 50 | 99.97966075314177 |
| 4001782 | 50 | 99.98002871869134 |
| 1788580 | 50 | 99.98064143581375 |
| 5300286 | 50 | 99.98275954274717 |
| 146401 | 50 | 99.98552389441573 |
| 4744748 | 50 | 99.98644758014609 |
+---------+------+--------------------+
16449 rows in set (2.188 sec)

Окей, меняем знак с "Больше" на "Меньше":
select * from (select id,rank as rank,(rand()*100) as thres from status_log where rank = 50) t where thres<rank order by thres;

Вывод:
| 5485599 | 50 | 49.96481263075472 |
| 968876 | 50 | 49.97663865795046 |
| 3613954 | 50 | 49.97714241033154 |
| 6263870 | 50 | 49.97751875778429 |
| 67389 | 50 | 49.97757910748718 |
| 4653786 | 50 | 49.98035016467827 |
| 6041489 | 50 | 49.980370281245904 |
| 5064204 | 50 | 49.989308742796354 |
| 1699741 | 50 | 49.991373205549436 |
| 3234039 | 50 | 49.99390454030959 |
| 806791 | 50 | 49.99575274996064 |
| 3713581 | 50 | 49.99814410693771 |
+---------+------+----------------------+
16562 rows in set (2.373 sec)

Опять 16000 значений! А где остальные 32000?

При этом, если я rand()*100 заранее подсчитываю и запихиваю в один столбец, то всё становится очевидно, всего по 32000.

При выборе rank=30 у меня распределение 6000 и 32000.

Где я продолбался?

2 ответов

6 просмотров

Мб это https://bugs.mysql.com/bug.php?id=101101 https://bugs.mysql.com/bug.php?id=101108

Diver-Al Автор вопроса

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта