Запрос SQL для выбора пар значений в столбце 1, которые соответствуют одному из двух шаблонов в столбце 2

Как найдено в http://www.mofeel.net/582-comp-soft-sys-matlab/54166.aspx

 pylab.ylim([0,1000])

Примечание: команда должен быть выполнен после сюжета!

1
задан Laurenz Albe 19 March 2019 в 03:35
поделиться

4 ответа

Таблица четко не определена, но в принципе запрос может выглядеть примерно так:

SELECT user_id
FROM installation
WHERE version = 'version 1'
INTERSECT
SELECT user_id
FROM installation
WHERE version = 'version 2';
0
ответ дан Laurenz Albe 19 March 2019 в 03:35
поделиться

Я могу придумать два пути, один с GROUP_CONCAT, а другой с использованием подзапроса.

SELECT user_id, GROUP_CONCAT(installed_version) as all_patterns
FROM your_table
GROUP BY user_id
HAVING all_patterns REGEXP 'Pattern 1'
AND all_patterns REGEXP 'Pattern 2';

-

SELECT * FROM 
(
SELECT user_id, installed_version FROM your_table
WHERE installed_version LIKE 'Pattern 1'
) as tmp
WHERE installed_version LIKE 'Pattern 2';
0
ответ дан Rahul Kapoor 19 March 2019 в 03:35
поделиться

Вы можете использовать пересечение, чтобы получить как шаблон 1, так и шаблон 2

SELECT [User ID]
FROM Table
WHERE [Install Version]='Pattern 1'
INTERSECT
SELECT [User ID]
FROM Table
WHERE [Install Version]='Pattern 2';
0
ответ дан Ajan Balakumaran 19 March 2019 в 03:35
поделиться

В Postgres я бы пошел на:

SELECT user_id
FROM t
GROUP BY user_id
HAVING COUNT(*) FILTER (WHERE installed_version = 'Pattern 1') > 0 AND
       COUNT(*) FILTER (WHERE installed_version = 'Pattern 2') > 0
0
ответ дан Gordon Linoff 19 March 2019 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: