Синтаксическая ошибка PARTITION BY - как получить секционированный результирующий набор [duplicate]

0

Мой запрос:

SELECT education,nickname,height
    ROW_NUMBER() OVER (PARTITION BY education ORDER BY height DESC) INDEX_NUM
FROM user
LIMIT 100;

Определение моей таблицы:

CREATE TABLE user (

female BOOLEAN NOT NULL,

nickname VARCHAR(60) NOT NULL,
id INT NOT NULL,
charm INT NOT NULL,
standardmember BOOLEAN NOT NULL,
idcard BOOLEAN NOT NULL,

age INT NOT NULL,
marriage VARCHAR(5) NOT NULL,
region VARCHAR(10) NOT NULL,

education VARCHAR(10) NOT NULL,
height INT NOT NULL,
weight INT NOT NULL,
constellation VARCHAR(5),
race VARCHAR(5),
animalzodiac VARCHAR(2) NOT NULL,

intro TEXT NOT NULL,

rage VARCHAR(10) NOT NULL,
rheight VARCHAR(15) NOT NULL,
rrace VARCHAR(10) NOT NULL,
reducation VARCHAR(10) NOT NULL,
rphoto VARCHAR(5) NOT NULL,
rmarriage VARCHAR(10) NOT NULL,
rregion VARCHAR(100) NOT NULL,
rhonesty VARCHAR(10) NOT NULL,

jobtitle VARCHAR(15),
industry VARCHAR(20),
companynature VARCHAR(10),
employeewelfare VARCHAR(10),
workintensity VARCHAR(10),
mobility VARCHAR(10),
careervsfamily VARCHAR(10),
overseaassignment VARCHAR(10),

college VARCHAR(30),
majortype VARCHAR(5),
languages VARCHAR(50),

birthplace VARCHAR(10),
residence VARCHAR(10),
nationality VARCHAR(15),
personality VARCHAR(5),
humor VARCHAR(6),
temper VARCHAR(6),
seriousness VARCHAR(15),
kidwish VARCHAR(5),
whentomarry VARCHAR(5),
longdistancelove VARCHAR(5),
dreammarriage TEXT,

livewithparents VARCHAR(5),
parents VARCHAR(5),
siblings VARCHAR(25),
financialsituation VARCHAR(10),
parentsinsurance VARCHAR(10),
parentsemployment VARCHAR(35),

sent BOOLEAN NOT NULL DEFAULT 0;

PRIMARY KEY (id)

);

Моя цель состоит в том, чтобы разделить набор результатов и отсортировать их в порядке возрастания высоты. Как это:

Изображение 174551

Но я получил ошибку:

Изображение 174551

Ну, я не очень хорошо разбираюсь в MySQL и синтаксисе запросов. Почувствуй свободу, чтобы научить меня, если я задам глупый вопрос. Спасибо.

  • 0
    Вы должны публиковать образцы данных и ошибок в виде текста, а не изображений. Текст доступен для поиска; изображений нет (и хуже, когда вы просто связываете их вне сайта). Во всяком случае, мне интересно узнать, что вы думаете, что синтаксис будет работать!
Показать ещё 1 комментарий
Теги:
database
sql-function
partition

1 ответ

0

Попробуйте этот запрос:

SELECT education,
       nickname,
       height,
       ROW_NUMBER() OVER w AS INDEX_NUM
FROM u
WINDOW w AS (
             PARTITION BY education,
             nickname ORDER BY height DESC 
             );

Здесь я использовал функции ROW_NUMBER с окном. Поскольку MySQL поддерживает неагрегатные функции, которые используются только как функции окна. Для них предложение OVER является обязательным:

CUME_DIST()
DENSE_RANK()
FIRST_VALUE()
LAG()
LAST_VALUE()
LEAD()
NTH_VALUE()
NTILE()
PERCENT_RANK()
RANK()
ROW_NUMBER()

Для получения дополнительной информации перейдите по следующей ссылке:

https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html

  • 1
    В чем была проблема, и как вы ее решили? Хороший ответ будет включать эту информацию.
  • 0
    Шаг 1: Обновите до 8.0.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню