#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.годы