#sql #oracle
#sql #Oracle
Вопрос:
Вот таблицы // спасибо за исправление моего формата//
ADV_COST
--------
PAGE_SIZE
MAG_ID
COST
//SAMPLE DATA ADV_COST//
PAGE_SIZE MAG_ID COST
-------------------- ---------- ----------
1/25 PAGE 1 40
1/8 PAGE 1 60
1/6 PAGE 1 65
...
ADS
--------
AD_ID
ADV_ID
PAGE_SIZE
MAG_ID
START_DATE
PURCH_DATE
NUM_ISSUES
//SAMPLE DATA ADS//
AD_ID ADV_ID PAGE_SIZE MAG_ID START_DAT PURCH_DAT NUM_ISSUES
---------- ---------- ---------- ---------- --------- --------- ----------
1 5 1/4 PAGE 1 01-APR-11 01-MAR-11 4
...
Вот вопрос:
Whirlpool ADV_ID=6; ДОМА: MAG_ID=1;
«Сколько денег Whirlpool потратила на рекламу в ДОМАХ в этом месяце?, в этом году?»
помогите, пожалуйста, спасибо!
Это то, что я пробовал.
SQL> SELECT SUM(COST)
2 FROM DVD_ADV_COST A, DVD_ADS B
3 WHERE A.MAG_ID = B.MAG_ID
4 AND B.ADV_ID = 6
5 AND B.MAG_ID = 1;
Комментарии:
1. Были ли у вас проблемы при попытке задать вопрос в хорошем формате? tkyte.blogspot.com/2005/06/how-to-ask-questions.html
2. Исправлено форматирование кода для вас. Ссылки на будущее: Строки в вопросах с отступом в четыре пробела будут отформатированы как блоки кода (или выделите текст и щелкните
{ }
значок в редакторе). Тем не менее, не могли бы вы поделиться тем, что вы пробовали? Вы понятия не имеете, с чего начать?3. Является ли поле затрат для каждого выпуска? В месяц? Сколько выпусков в месяц?
4. Я бы предположил, что вам также следует объединить A и B в PAGE_SIZE в вашем предложении WHERE
5. Приведенный мной sql-код выполняется, но он ничего не добавляет. Я еще не пробовал делать промежуточные даты
Ответ №1:
Попробуйте
SELECT SUM(B.COST * A.NUM_ISSUES) AS TOTAL_COST
FROM DVD_ADS A,
DVD_ADV_COST B
WHERE B.MAG_ID = A.MAG_ID
AND B.PAGE_SIZE = A.PAGE_SIZE
AND A.ADV_ID = 6
AND A.MAG_ID = 1
а затем добавьте свой диапазон дат также в предложение WHERE
Если он не возвращает никаких данных, убедитесь, что у вас действительно есть записи для ADV_ID = 6 …. в вашем примере показана запись для 5
Комментарии:
1. Называются ли таблицы DVD_ADS и DVD_ADV_COST или ADS и ADV_COST
2. dvd_ads и dvd_adv_cost; Я сократил их, чтобы всем было проще вводить
3. Я только что проверил данные в таблице ads, и там нет adv_ids, которые = 6. Вот почему это ничего не добавляет..