Sql-запрос: диапазон дат и значение больше 10 каждый год

#sqlite

Вопрос:

У меня есть таблица, которая содержит, скажем, 3 столбца( название компании, годы, roc). Я хочу узнать название компании, которое удовлетворяет нижеприведенному условию. Между 2010 и 2020 годами и rocgt; 10 каждый год. Имею в виду, если в какие-либо годы между 2010 и 2020 годами roc Он должен показывать только название компании, если каждый год roc gt;10.

Ответ №1:

Отфильтруйте таблицу по нужным годам и агрегируйте с условием в HAVING предложении для столбца roc :

 SELECT companyname  FROM tablename WHERE years BETWEEN 2010 AND 2020 GROUP BY companyname HAVING MIN(roc) gt; 10;  

Ответ №2:

Ладно, я думаю, что только сейчас понял твою проблему. Главная проблема здесь в том, что компании дублируются в одной таблице, что нарушает принципы БД, что, по-видимому, затрудняет ответный запрос.

Поэтому лучшее, что вы могли бы сделать, это разбить эту единственную таблицу на две — COMPANY_TABLE и COMPANY_ROC

Таким образом, COMPANY_TABLE будет содержать только идентификатор компании(ПЕРВИЧНЫЙ КЛЮЧ) и имя компании.

Затем создайте другую таблицу под названием COMPANY_ROC, в которой будут указаны roc , годы , идентификатор компании(ВНЕШНИЙ КЛЮЧ — ПЕРВИЧНЫЙ КЛЮЧ COMPANY_TABLE).

 CREATE TABLE COMPANY(  companyID int PRIMARY KEY NOT NULL,  companyName varchar, )   CREATE TABLE COMPANY_ROC(  companyID int,  roc int,  years int,  FOREIGN KEY(companyID) REFERENCES COMPANY(companyID) )  

ПОЭТОМУ при выполнении запроса вы можете выполнить запрос следующим образом, используя ВНУТРЕННЕЕ СОЕДИНЕНИЕ

 SELECT COMPANY.companyName from COMPANY INNER JOIN COMPANY_ROC WHERE COMPANY_ROC.yearsgt;=2010 AND COMPANY_ROC.yearslt;=2020 AND COMPANY_ROC.rocgt;10 AND COMPANY.companyID = COMPANY_ROC.companyID  

Возможно, в моем запросе могут возникнуть некоторые проблемы, поскольку я его не проверял. Просто поймите, что я объяснил, и попробуйте. Разбиение таблицы на две части и наличие первичных внешних ключей-это ключ для простого запроса 🙂

Комментарии:

1. как насчет того, чтобы иметь только одну таблицу, которая имеет уникальную запись по имени компании и годам. я попытался изменить ваш запрос, но по-прежнему нет, не дает правильного вывода.

2. ВЫБЕРИТЕ a.имя_компании, a.roce из финансовой компании a. ПРИСОЕДИНИТЕСЬ к финансовой компании b, ГДЕ b.годыgt;=2010 И b.годыgt;lt;=2020 И b.roce gt;=20 И a.имя_компании = b.имя_компании и a.годы= b.годы