MySql, используя правильный синтаксис для предложения over - PullRequest
11 голосов
/ 09 июня 2011

Каков правильный синтаксис, чтобы заставить предложение over работать в mysql?

Я бы хотел видеть общее количество смс, отправленных каждым пользователем, без группировки его с предложением group by.

SELECT 
    username, 
    count(sentSmsId) OVER (userId) 
FROM 
    sentSmsTable,
    userTable
WHERE
    userId = sentUserId;

Ответы [ 4 ]

13 голосов
/ 09 июня 2011

В MySQL нет ни одного предложения OVER, о котором я знаю, но вот ссылка, которая может помочь вам достичь тех же результатов:

http://explainextended.com/2009/03/10/analytic-functions-first_value-last_value-lead-lag/

Надеюсь, это поможет.

10 голосов
/ 09 ноября 2017

MySQL 8 имеет оконные функции !Поэтому вы можете написать в нем свой запрос так:

SELECT username, 
       count(sentSmsId) OVER (partition by userId) 
FROM sentSmsTable
JOIN userTable ON userId = sentUserId;     
5 голосов
/ 09 июня 2011

MySQL в настоящее время не поддерживает оконные функции, поэтому over() будет выдавать только синтаксические ошибки (или мусор, если он принят независимо).

3 голосов
/ 30 мая 2018

MySQL Не имеет оконных функций до самого последнего выпуска: MySQL 8 (выпуск в апреле 2018 года). MS SQL Server также принимает предложение OVER.

Синтаксис:

function(col1) OVER (PARTITION BY col2 ORDER BY col3)

Проверьте https://mysqlserverteam.com/mysql-8-0-2-introducing-window-functions/ для большего количества примеров.

...