Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL свързване на таблици в група по проблем със сума

Трябва да изравните както D, така и E таблицата. Тогава предполагам, че A и B са просто търсения за C, така че няма нужда да правите GROUP BY на A:http://www.sqlfiddle.com/#!2/fccf1/8

Премахнах шума (A и B), тъй като не мога да видя (все още) как A и B са свързани с обобщаването на информацията за C

Опитайте това:

ИЗБЕРЕТЕ C.Article, C.Text, COALESCE(D.ClicksSum,0) КАТО ClicksSum, COALESCE(D.ImpressionsSum,0) КАТО ImpressionsSum, COALESCE(E.ViewsSum,0) КАТО ViewsSum, COALESCE( E.VisitorsSum,0) AS VisitorsSumFROM C LEFT JOIN ( SELECT TableC, SUM(Clicks) AS ClicksSum, SUM(Impressions) AS ImpressionsSum FROM D GROUP BY TableC ) D ON C.ID=D.TableC LEFT JOIN ( SELECT TableC, SUM (Прегледи) КАТО ViewsSum, SUM(Посетители) КАТО VisitorsSum ОТ E ГРУПА ПО TableC ) E ON C.ID=E.TableC 

Изход:

<предварителен код>| СТАТИЯ | ТЕКСТ | CLICKSSUM | IMPRESSIONSSUM | VIEWSSUM | СУМ НА ПОСЕТИТЕЛИТЕ |------------------------------------------------ ----------------------------------| Тип | Unicode Art | 23 | 8 | 23 | 8 || Заглавие | Електронна таблица | 15 | 10 | 32 | 21 || Автоматично подравняване | Изключено | 0 | 0 | 0 | 0 |

Имайте предвид, че не написах тези схеми в моята sqlfiddle публикация ръчно, използвам Текст към DDL на sqlfiddle

Обичам http://sqlfiddle.com , неговият Текст към DDL може дори да анализира данните от вашето ASCII изображение ツ

След като видите по-ясната си цел (от коментара си), това може да е това:http:/ /www.sqlfiddle.com/#!2/fccf1/13

ИЗБЕРЕТЕ A.Name, A.Description, COALESCE(SUM(D.ClicksSum),0) КАТО ClicksSum, COALESCE(SUM(D.ImpressionsSum),0) КАТО ImpressionsSum, COALESCE(SUM(E.ViewsSum) ),0) КАТО ViewsSum, COALESCE(SUM(E.VisitorsSum),0) AS VisitorsSumFROM C LEFT JOIN ( SELECT TableC, SUM(Clicks) AS ClicksSum, SUM(Impressions) AS ImpressionsSum FROM D GROUP BY TableC ) D ON C. ID=D.TableC LEFT JOIN ( SELECT TableC, SUM(Views) AS ViewsSum, SUM(Visitors) AS VisitorsSum ОТ E GROUP BY TableC ) E ON C.ID=E.TableC DIGHT JOIN B ON B.ID =C.TableB DIGHT JOIN A ON A.ID =B.TableAGROUP BY A.ID 

Изход:

<предварителен код>| ИМЕ | ОПИСАНИЕ | CLICKSSUM | IMPRESSIONSSUM | VIEWSSUM | СУМ НА ПОСЕТИТЕЛИТЕ |------------------------------------------------ ----------------------------------| Тип | Unicode Art | 38 | 18 | 55 | 29 || Заглавие | Електронна таблица | 0 | 0 | 0 | 0 || Автоматично подравняване | Изключено | 0 | 0 | 0 | 0 |

Горният подход все още може да произвежда декартови продукти, изравняване на подкатегория (B), преди да я групира в категория (A):http://www.sqlfiddle.com/#!2/fccf1/19

ИЗБЕРЕТЕ A.Name, A.Description, COALESCE(SUM(B.ClicksSum),0) КАТО ClicksSum, COALESCE(SUM(B.ImpressionsSum),0) КАТО ImpressionsSum, COALESCE(SUM(B.ViewsSum) ),0) КАТО ViewsSum, COALESCE(SUM(B.VisitorsSum),0) КАТО VisitorsSumFROM ALEFT JOIN( SELECT B.ID, B.TableA, SUM(C.ClicksSum) КАТО ClicksSum, SUM(C.ImpressionsSum) КАТО ImpressionsSum, SUM(C.ViewsSum) КАТО ViewsSum, SUM(C.VisitorsSum) КАТО VisitorsSum ОТ B LEFT JOIN ( SELECT C.TableB, D.ClicksSum, D.ImpressionsSum, E.ViewsSum, E.VisitorsSum ОТ C LEFT JOIN ( SELECT TableC, SUM(Clicks) AS ClicksSum, SUM(Impressions) AS ImpressionsSum FROM D GROUP BY TableC ) D ON C.ID=D.TableC LEFT JOIN ( SELECT TableC, SUM(Views) AS ViewsSum, SUM(Посетители) AS VisitorsSum ОТ E GROUP BY TableC ) E ON C.ID=E.TableC ) C ON C.TableB =B.ID GROUP BY B.ID) B ON B.TableA =A.IDGROUP BY A.ID 

Изход:

<предварителен код>| ИМЕ | ОПИСАНИЕ | CLICKSSUM | IMPRESSIONSSUM | VIEWSSUM | СУМ НА ПОСЕТИТЕЛИТЕ |------------------------------------------------ ----------------------------------| Тип | Unicode Art | 38 | 18 | 55 | 29 || Заглавие | Електронна таблица | 0 | 0 | 0 | 0 || Автоматично подравняване | Изключено | 0 | 0 | 0 | 0 |

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да се присъединя към множество SQL таблици, използвайки идентификаторите?

  2. Как да получа идентификатора след INSERT в MySQL база данни с Python?

  3. Колко дълъг е хешът на SHA256?

  4. MySQL и Проверка на ограниченията

  5. Инсталиране на gem:Неуспешно изграждане на родно разширение на gem (не мога да намеря заглавни файлове)