Как найти все строки, имеющие одинаковые значения, но, возможно, переставленные строки в SQL - PullRequest
0 голосов
/ 16 сентября 2018

Невозможно понять, как считать все строки с одинаковыми значениями в любом порядке. Например, в этом примере

1| Jay   | Jo
2| Jay   | Jo
3| Jay   | Jo
4| Jo    | Jay
5| Linda | Luke
6| Linda | Luke
7| Luke  | Linda
8| Luke  | Wendy

Я ищу следующий вывод:

Jay   | Jo    | 4
Linda | Luke  | 3
Luke  | Wendy | 1

Я убивал себя из-за этого в течение 2 дней. Все не работает. Объединения ведут к пересчету, профсоюзы тоже не работают. поскольку они сохраняют записи с обоими порядками ... Я понимаю, что мне, вероятно, нужно выполнить какое-то самостоятельное объединение и рассмотреть две копии одной и той же таблицы. Но какие манипуляции выполнять я не знаю! Действительно запутался! Пожалуйста, помогите!

Если возможно, я был бы признателен за ответ в SQL Lite, но, возможно, подойдет любой синтаксис. Мне просто нужно понять логику составления таблиц.

Спасибо

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Более простой способ в SQLite - использовать least и greatest.

select least(col1,col2),greatest(col1,col2),count(*)
from tbl
group by least(col1,col2),greatest(col1,col2)
0 голосов
/ 16 сентября 2018

Просто маленький логический переключатель должен сделать трюк

Пример

Select Col1
      ,Col2
      ,count(*) as Hits
 From (
        Select case when col1<Col2 then Col1 else Col2 end as Col1
              ,case when col1<Col2 then Col2 else Col1 end as Col2
          from YourTable
      ) A
 Group By Col1,Col2

Возвращает

Col1    Col2    Hits
Jay     Jo      4
Linda   Luke    3
Luke    Wendy   1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...