2016-07-03 4 views
0

Мне нужно выбрать записи, которые не дублируются несколькими столбцами, Last_name, First_Name. Я использую COUNT (First_Name), как часть SELECT, для проверки количества результатов.Добавление значений столбцов таблицы drived

SELECT Last_Name, First_Name, COUNT(First_Name) 
FROM table_of_people_and_their_data 
GROUP BY LAST_Name HAVING COUNT(First_Name) = 1; 

- дает все отдельные записи и количество записей в качестве чека.

SELECT Last_Name, First_Name, COUNT(First_Name) 
FROM table_of_people_and_their_data 
GROUP BY LAST_Name HAVING COUNT(First_Name) > 1; 

- содержит все записи с дубликатами и количеством дубликатов.

все из той же таблицы.

table_of_people_and_their_data имеет много столбцов. Только сортировка по имени и фамилии.

Теперь счетчик (table_of_people_and_their_data) производит 957 строк.
                                                                      count первого запроса = 1 производит 120 строк.
                                                          Количество второго запроса> 1 производит 359 строк.
                                                                                                      Всего этих запроса 479 строк.                120 + 359 = 479

                            Я полагаю, что результаты с повторяющимися строками имеют счетчик 837 строк. 957 - 120 = 837

Запросы Я дал произвести таблицу, которая считывает с тремя столбцами, Last_name, First_name, COUNT (First_Name)

Что-то вроде:

 Last_Name | First_Name | Count 
      Jack  Frost  3 
     Sally  Soft   4 

и так на. Я полагаю, что если я добавлю столбец «Графа», я смогу доказать предыдущие запросы, так как все результаты столбца Count, добавленные вверх, должны быть 837.

Как я могу достичь этого в одном запросе; Использованный запрос, приведенный выше, изменил что-то вроде:

SELECT Last_Name, First_Name, SUM(mycount) 
FROM COUNT(First_Name) mycount FROM table_of_people_and_their_data 
GROUP BY LAST_Name HAVING COUNT(First_Name) > 1; 

Я пробовал много вариантов использования псевдонимов и таблиц. Большинство моих ошибок вернулись ОШИБКА 1248 (42000): Каждая производная таблица должна иметь свой собственный псевдоним

Спасибо за ваше время.

+0

Покажите нам образец ввода и вывода. –

ответ

0

Что-то вроде этого: -

Select srce,first_name,last_name,Obs,CumulativeTotal 
from 
(
select srce,first_name,last_name,Obs,rn,@rt:[email protected]+Obs as CumulativeTotal 
from 
(
SELECT 1 as srce,FIRST_NAME,LAST_NAME,COUNT(*) as Obs, @rn:[email protected] + 1 as rn 
FROM  TBL_BORROWERS , (select @rn:=0) rb 
group by first_name, last_name having (count(*) = 1) 
) s 
,(select @rt:=0) rt 
) t 

union all 
select srce,'Unique Csutomers', '' ,count(distinct first_name,last_name),count(distinct first_name,last_name) 
from 
(
select 2 as srce,first_name,last_name,Obs,rn,@rt:[email protected]+Obs as CumulativeTotal 
from 
(
SELECT 1 as srce,FIRST_NAME,LAST_NAME,COUNT(*) as Obs, @rn:[email protected] + 1 as rn 
FROM  TBL_BORROWERS , (select @rn:=0) rb 
group by first_name, last_name having (count(*) = 1) 
) s 
,(select @rt:=0) rt 
) t 

union all 
Select srce,first_name,last_name,Obs,CumulativeTotal 
from 
(
select srce,first_name,last_name,Obs,rn,@rt1:[email protected]+Obs as CumulativeTotal 
from 
(
SELECT 3 as srce,FIRST_NAME,LAST_NAME,COUNT(*) as Obs, @rn1:[email protected] + 1 as rn 
FROM  TBL_BORROWERS , (select @rn1:=0) rn 
group by first_name, last_name having (count(*) > 1) 
) s 
,(select @rt1:=0) rt1 

) t 

union all 
select srce,'Duplicate Customers', '' ,count(distinct first_name,last_name),count(distinct first_name,last_name) 
from 
(
select 4 as srce,first_name,last_name,Obs,rn,@rt:[email protected]+Obs as CumulativeTotal 
from 
(
SELECT 1 as srce,FIRST_NAME,LAST_NAME,COUNT(*) as Obs, @rn:[email protected] + 1 as rn 
FROM  TBL_BORROWERS , (select @rn:=0) rb 
group by first_name, last_name having (count(*) > 1) 
) s 
,(select @rt:=0) rt 
) t 


UNION  
SELECT 9 as srce,'Distinct Customers' as first_name,'' as last_name, 
      COUNT(DISTINCT FIRST_NAME,LAST_NAME), 
      COUNT(DISTINCT FIRST_NAME,LAST_NAME) 
FROM  TBL_BORROWERS 
UNION  
SELECT 10 as srce,'Total Rows' as first_name,'' as last_name, 
      COUNT(*), 
      COUNT(*) 
FROM  TBL_BORROWERS 
Смежные вопросы