Переделать запрос с MS SQL на MySQL

Узнай цену своей работы

Формулировка задачи:

Здравствуй всяк вошедший. Нужно переделать запрос MS SQL на MySQL. Подробные условия задачи: Выбрать все строки с разными значениями столбца Поможет кто?
select
     top(1) with ties
     c.StationId,
     c.DeviceNumber,
     c.ArchiveType,
     d.TimeValue
 from 
    Channels c join Data d
     on c.id = d.channelId
 where
     c.StationID in (1502)
     and    d.TimeValue between '20160101 16:58' and '20160203 17:04'
     and c.ArchiveType = 1
 
order by row_number()over(partition by convert(char(13),d.timeValue,126) order by d.timeValue);
Неужели никто не знает как? Можно переделать запрос попроще:
SELECT TOP(1) WITH TIES *
FROM T
ORDER BY ROW_NUMBER()OVER(PARTITION BY CONVERT(CHAR(13),[time],126) ORDER BY [time]);
ориентируясь только на условия Выбрать все строки с разными значениями столбца Остальное сам допилю.

Решение задачи: «Переделать запрос с MS SQL на MySQL»

textual
Листинг программы
SELECT * FROM `testdate` GROUP BY FLOOR(UNIX_TIMESTAMP(`time`)/3600);

Объяснение кода листинга программы

В данном коде выполняется запрос на выборку данных из таблицы testdate, затем результаты группируются по времени, определенному как целочисленное значение, полученное путем деления UNIX_TIMESTAMP на 3600.

  1. SELECT * FROMtestdateGROUP BY FLOOR(UNIX_TIMESTAMP(time)/3600);
    • * означает, что выбираются все столбцы из таблицы testdate
    • testdate - название таблицы, из которой производится выборка
    • GROUP BY FLOOR(UNIX_TIMESTAMP(time)/3600); группирует результаты по времени, определенному как целочисленное значение, полученное путем деления UNIX_TIMESTAMP на 3600.
    • FLOOR(UNIX_TIMESTAMP(time)/3600); преобразует время в целочисленное значение, полученное путем деления UNIX_TIMESTAMP на 3600.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5