2013-09-24 3 views
1

Я новичок в PostgreSQL. Я хотел бы выполнить операцию строки на моем столе. Для примера рассмотрим этот вывод таблицы:PostgreSQL: необходимо выполнить операцию строки

Record | Accesories | Used 
Joy  | Laptop  |  500 
Joy  | Android |  270 
Stuart | Laptop  |  300 
Stuart | Android |  25 

Я хотел бы, чтобы отобразить название «Record», для которых Android использования составляет до 10% от Laptop.IN этом случае его радость, кто использует Android устройства до 10% ноутбука. Математический расчет мы сделали: (270/500)*100=54%. Я хочу, чтобы такая же операция выполнялась в моей таблице. Таблица имеет более 1 lac такой записи. Может ли кто-нибудь помочь мне в вопросе создания запроса для него. Благодаря

+0

читать о присоединяется - http://www.w3schools.com/sql/sql_join.asp. Когда вы закончите, прочитайте об индексах и о том, как это поможет сделать ваши соединения быстрее. После этого вы легко напишите этот запрос –

+0

Спасибо за ответ. Но даже, изучая Joins, я не очень понимаю. Я тоже попробовал присоединиться к себе. У меня есть только одна таблица в моей базе данных, из которой мне нужно получить результат. – user2811262

ответ

1
select 
    T1.Record 
from Table1 as T1 
    inner join Table1 as T2 on T2.Record = T1.Record 
where 
    T1.Accesories = 'Android' and T2.Accesories = 'Laptop' and 
    (T1.Used::float/T2.Used * 100)::int > 10 

На самом деле то, что делается здесь - мы получаем все строки из Table1 где Accesories = 'Android', а затем для каждой записи мы пытаемся найти записи, где запись = запись из выбранной строки и Accesories = 'Laptop' (обратите внимание, что если Record, Accesories не является уникальным ключом для ваш стол, вы можете получить дублирующиеся строки). После этого все, что вам нужно, это просто вычислить значение и отфильтровать строки, которые не удовлетворяют условию (добавив это в пункт where).

sql fiddle demo

+0

Спасибо, сработало. – user2811262

+0

@ user2811262 по крайней мере попытайтесь понять, почему это сработало –

+1

«Попытайтесь понять», когда сказано о кучке кода, не содержащее объяснений, не очень полезно. :) –