sql найти строки с разными значениями столбца

Моя таблица базы данных (она имеет миллионы записей)

sitename rank date facebook.com 1 2016-2-13 gmail.com 2 2016-2-13 yahoo.com 3 2016-2-13 aol.com 4 2016-2-13 facebook.com 1 2016-2-14 gmail.com 2 2016-2-14 yahoo.com 4 2016-2-14 aol.com 3 2016-2-14 

Я хочу найти сайты, чей рейтинг изменился. в приведенной выше иллюстрации yahoo и aol изменились. Я попробовал несколько запросов, но не могу заставить его работать.

Его простой выбор, группа и запрос такой:

 SELECT sitename,MAX(rank) - MIN(rank) as changed FROM YourTable GROUP BY sitename HAVING COUNT(DISTINCT rank) > 1 

Основываясь на приведенных идеях, вот что у меня есть:

 SELECT sitename, rank, rank - (SELECT rank from sites WHERE sitename = main.sitename ORDER BY date LIMIT 1,2) as rankChange FROM sites as main WHERE date <= NOW() GROUP BY sitename HAVING COUNT(DISTINCT rank) > 1 

Это вернет

 sitename rank rankChange aol.com 4 1 yahoo.com 3 -1 

Если вы удалите HAVING COUNT(DISTINCT rank) > 1 из запроса, вы увидите набор с неизмененными веб-сайтами:

 sitename rank rankChange aol.com 4 1 facebook.com 1 0 gmail.com 2 0 yahoo.com 3 -1 

вы можете сделать это следующим образом:

 select * from your_table t_outer group by sitename, date having rank <> (select rank from your_table t_internal where t_outer.date > t_internal.date and t_outer.sitename = t_internal.sitename order by t_internal.date limit 1) 

и он выводится:

введите описание изображения здесь

Что-то вроде следующего. И вам нужен рекорд для каждого сайта каждый день

 SELECT sitename, MAX(rank) - MIN(rank) as ChangeRank FROM ChangeHistoryTable WHERE date between dateFromWhichYouNeedChanges and dateToWhichYouNeedChanges GROUP BY sitename HAVING COUNT(DISTINCT rank) > 1 

Попробуй это:

 Select sitename from table group by sitename having count(*) > 1 order by sitename, rank DESC 
  • Как импортировать файл SQL Server .bak в MySQL?
  • Эквивалент функции SQLServer SCOPE_IDENTITY () в mySQL?
  • извлечение данных с сервера MySql с использованием SQL-сервера openquery
  • C ++ / SIFT / SQL - Если есть способ эффективно сравнить дескриптор SIFT изображения с дескриптором SIFT в базе данных SQL?
  • Перенос с MySql на сервер Sql 2008
  • Реализация MySQL SQL Server 2005 ЗАМЕНИТЬ INTO?
  • Сокращение в SQL и отсутствие аббревиатуры
  • Решено: запрос exec сбой при попытке записи из базы данных qt в MS Sql в Windows с использованием ODBC
  • SQL - ИСКЛЮЧЕНИЕ К ПРИСОЕДИНЕНИЮ
  • как создать полнотекстовый индекс в столбце без ошибок
  • SQL-сервер выбирает различные последние значения путем внутреннего соединения трех или более таблиц
  • Interesting Posts

    Управление миграцией БД: скрипты и инструменты

    SQL Server добавляет ограничение столбца для ограничения данных до -1 к 1

    Столбец в таблице имеет тип, который недопустим для использования в качестве ключевого столбца в индексе

    Таблица MS SQL 2005 для XML

    Как я могу запросить суммы в долларах, которые имеют слишком высокую точность?

    не может получить точный десятичный процентный результат?

    Создание хранимой процедуры в первый раз

    Ошибочно убил процесс sqlserver.exe в диспетчере задач, как его перезапустить?

    Планирование использования PostgreSQL с ASP.NET: плохая идея?

    Где я могу получить большую базу данных SQL Server?

    Как увеличить таймаут DataAdapter до 3 минут?

    Обновляется ли статистика таблицы во время создания кластерного индекса?

    Обнаружение локальной установки SQL-сервера с помощью C # (32-разрядная, а также 64-разрядная версия)

    Оператор CASE в обновлении

    Строки SQL в столбцы с уникальными именами столбцов

    Давайте будем гением компьютера.