SQLite count, group и order by count (с разделителем |) - PullRequest
0 голосов
/ 22 сентября 2019

я хочу посчитать базу данных SQLITE там movie-Genren.

В базе данных в качестве примера сохранены жанры, 3 примера:

Genres
---------
Action 
Western|Crime
Drama|Western|Comedy|Horror

Кто-нибудь может предложить мне решение?

1 Ответ

0 голосов
/ 23 сентября 2019

Вопрос все еще слишком расплывчат, но в честь движения "будь милым" и "ответь что-нибудь" в Переполнении стека, вот начало решения:

/*
DROP TABLE IF EXISTS movie;

CREATE TEMP TABLE movie
(id INTEGER NOT NULL UNIQUE PRIMARY KEY AUTOINCREMENT,
genres TEXT);

INSERT INTO movie (genres)
VALUES
   ('Action'),
   ('Western|Crime'),
   ('Drama|Western|Comedy|Horror');

*/

WITH RECURSIVE split AS (
     SELECT id, 
            0 AS num,
            instr(genres,'|') AS delimit,
            null AS genre, 
            genres AS remain
     FROM movie
     WHERE genres is not null
     UNION
     SELECT 
            id,
            num + 1 AS num,
            CASE WHEN delimit <= 0 THEN -1
                 ELSE instr(substr(remain, delimit + 1),'|') END AS delimit, 
            CASE WHEN delimit <= 0 THEN remain 
                 ELSE substr(remain, 1, delimit -1) END AS genre,
            CASE WHEN delimit <= 0 THEN null 
                 ELSE substr(remain, delimit + 1) END AS remain
     FROM split
     WHERE delimit >= 0
)
SELECT id, num, genre
FROM split
WHERE genre is not null
ORDER BY id, num;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...