Нужно получать курс первого дня, для выбранного периода - first, и последнего дня - last. Чтобы высчитать разницу. После чего {last} - {first} = {Х}. И вот по этому {Х} делать сортировку выборки.
SELECT DISTINCT
coin_uuid,
FIRST_VALUE(price) OVER (PARTITION BY coin_uuid ORDER BY last_updated ASC) firstprice,
FIRST_VALUE(price) OVER (PARTITION BY coin_uuid ORDER BY last_updated DESC) lastprice
FROM exchange_rates
ORDER BY coin_uuid, lastprice - firstprice
Сколько учетных записей должно быть у администратора?
SELECT *
FROM user_friend uf1
WHERE [NOT] EXISTS ( SELECT NULL
FROM user_friend uf2
WHERE uf2.friend_user_id = uf1.user_id )
AND friend_user_id > user_id
. Очень мешает откуда-то самопроизвольно возникающая схема mydb, которую я не могу удалить.
таблицы стали создаваться именно в ней, а не в той схеме с которой я работаю
CREATE TABLE dbname.tablename ( .. );
) - таблица будет создана именно в указанной БД. Если же имя БД не указать - таблица создаётся в текущей БД. Почему у Вас именно эта БД текущая, и почему Вы не меняете её перед созданием таблиц запросом USE - это именно к Вам вопросы, и именно Ваша вина в том, что таблицы создаются "не там". WITH
cte1 AS ( SELECT id, col1 val FROM test UNION ALL
SELECT id, col2 FROM test UNION ALL
SELECT id, col3 FROM test ),
cte2 AS ( SELECT id, GROUP_CONCAT(val ORDER BY val) FIO
FROM cte1
GROUP BY id )
SELECT test.id, test.col1, test.col2, test.col3, GROUP_CONCAT(cte2_2.id) ids
FROM test
JOIN cte2 cte2_1 USING (id)
JOIN cte2 cte2_2 USING (FIO)
GROUP BY test.id, test.col1, test.col2, test.col3
id col1 col2 col3 ids
1 Иванов Иван Иванович 1,2
2 Иван Иванович Иванов 1,2
3 Петров Сергей Алексеевич 3,4,5
4 Петров Сергей Алексеевич 3,4,5
5 Сергей Алексеевич Петров 3,4,5
DEMOвыполняться будет на MS SQL Server, версию не могу сказать.
что эффективнее: хранить в записи список id объектов, которые должны быть обработаны при обращении к этой записи, в виде строки (скрипт будет парсить строку и отрабатывать каждый id), либо сделать триггер и хранимую процедуру (MySQL), которая возьмёт эту работу на себя?
SELECT prices.*
FROM prices
JOIN ( SELECT size, MAX(`date`) AS `date`
FROM prices
WHERE price
-- AND `date` <= @some_date
GROUP BY size ) AS last_nonzero_date USING (size, `date`);
(size, `date`)
- уникально.SELECT MIN(`min_price`) OVER () as `min_price`,
MAX(`max_price`) OVER () as `max_price`,
`item_id` as `id`
FROM `product_table`
WHERE `id` IN (SELECT тут запрос)
Akina, да, версия 5.7.21 и она, я так понимаю, не поддерживает оконные функции.
SELECT t2.min_price,
t2.max_price,
t1.item_id as id
FROM product_table t1
CROSS JOIN ( SELECT MIN(min_price) AS min_price,
MAX(max_price) AS max_price
FROM product_table ) t2
WHERE t1.id IN (SELECT тут запрос)
Есть папка, которая хранит в себе sql файлы для создания бд, таблиц в этой бд, импорт данных в эти таблицы.
Как автоматизировать запуск этих sql скриптов?
нужно удалить записи с одинаковыми date и user_id
DELETE t1.*
FROM tablename t1
JOIN tablename t2 USING (date, user_id)
WHERE t1.id > t2.id
а лучше не создавать их
CREATE UNIQUE INDEX indexname ON tablename (date, user_id)