SQLinfo.ru - Все о MySQL PG day 17

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 28.03.2017 22:00:32

EITKpoll
Участник
Зарегистрирован: 27.03.2017
Сообщений: 1

Запрос в SQLite и LIMIT

Запрос выдал только 10 строк отсортированных полей. ZA это последний код поля [cc] из всего массива. Как вывести все остальные [cc]?

SELECT
  ccg.cc, cg.country || ' ' || round((100.0 * cCnt / Cnt),1) || '%' Prc
FROM (
  SELECT
    cc, COUNT(*) Cnt
  FROM
    patent_country
  GROUP BY cc
) ccg
  JOIN (
    SELECT
      cc, country, COUNT(*) cCnt
    FROM
      patent_country
    GROUP BY cc, country
) cg ON ccg.cc = cg.cc
ORDER BY ccg.cc DESC
LIMIT 10


Результат запроса:
cc    Prc
ZA    AT 11.5%
ZA    AU 11.5%
ZA    BR 3.8%
ZA    CN 3.8%
ZA    DE 11.5%
ZA    EP 11.5%
ZA    ES 7.7%
ZA    IL 7.7%
ZA    JP 3.8%
ZA    MX 3.8%

Ни как не могу изменить запрос чтобы, для каждой группы [сс] выдать только по 10 строк с убывающими процентами.
Конечно в представленной таблице больше записей, но для примера хватит. Таблица [patent_country] формируется  так:
CREATE TABLE [patent_country] (
  [id_patent_country] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  [id_patent] INTEGER,
  [country] VARCHAR,
  [cc] VARCHAR)
 
  INSERT INTO patent_country (id_patent, country, cc)
  VALUES (1,    'DE',    'AU');
  INSERT INTO patent_country (id_patent, country, cc)
  VALUES (2,    'AU',    'AU');
  INSERT INTO patent_country (id_patent, country, cc)
  VALUES (2,    'DE',    'AU');
  INSERT INTO patent_country (id_patent, country, cc)
  VALUES (2,    'WO',    'AU');
  INSERT INTO patent_country (id_patent, country, cc)
  VALUES (3,    'DE',    'AU');
  INSERT INTO patent_country (id_patent, country, cc)
  VALUES (4,    'RU',    'AU');
  INSERT INTO patent_country (id_patent, country, cc)
  VALUES (5,    'RU',    'AU');
  INSERT INTO patent_country (id_patent, country, cc)
  VALUES (6,    'RU',    'AU');
  INSERT INTO patent_country (id_patent, country, cc)
  VALUES (7,    'RU',    'AU');
  INSERT INTO patent_country (id_patent, country, cc)
  VALUES (8,    'AU',    'WO');
  INSERT INTO patent_country (id_patent, country, cc)
  VALUES (9,    'CN',    'WO');
  INSERT INTO patent_country (id_patent, country, cc)
  VALUES (9,    'DE',    'WO');
  INSERT INTO patent_country (id_patent, country, cc)
  VALUES (9,    'DK',    'WO');
  INSERT INTO patent_country (id_patent, country, cc)
  VALUES (9,    'EP',    'WO');
 

Неактивен

 

#2 28.03.2017 22:11:48

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5156

Re: Запрос в SQLite и LIMIT

не знаю как в SQLite, а в MySQL можно или с помощью пользовательских переменных (см http://sqlinfo.ru/forum/viewtopic.php?id=1742) но с т.з. производительности лучше сделать несколько запросов (в цикле для каждой группы)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson