sql >> Databasteknik >  >> RDS >> Mysql

Avancerade aggregat för summa fält

Skriv underfrågor för att få totala klick och försäljningar för varje annons i datumintervallet. Förena dessa med ad tabell för att få annonsnamnet och product tabell för att få produktnamnen. Kombinera produktnamnen med GROUP_CONCAT .

SELECT ad.ad_name, IFNULL(clicks, 0) AS clicks, IFNULL(product_sale, 0) AS product_sale, IFNULL(GROUP_CONCAT(DISTINCT p.product_name), '') AS products
FROM ad
LEFT JOIN (
    SELECT ad_id, SUM(clicks) AS clicks
    FROM ad_insight
    WHERE date BETWEEN '2021-04-23' AND '2021-04-25'
    GROUP BY ad_id
) AS ai ON ai.ad_id = ad.ad_id
LEFT JOIN (
    SELECT ad_id, SUM(sale) AS product_sale
    FROM ads_products AS ap
    LEFT JOIN product_insight AS pi ON pi.product_id = ap.product_id
    WHERE date BETWEEN '2021-04-23' AND '2021-04-25'
    GROUP BY ad_id
) AS pi ON pi.ad_id = ad.ad_id
LEFT JOIN ads_products AS ap ON ap.ad_id = ad.ad_id
LEFT JOIN product AS p ON ap.product_id = p.product_id
GROUP BY ad.ad_id

DEMO




  1. I SQL Server 2008 kan jag skicka tabellvärderade parameter till min lagrade procedur från NHibernate. Hur man uppnår detsamma i Oracle

  2. Hur kan jag använda JDBC för att kopiera schema från en databas till en annan utan att använda Apache DDLUtils?

  3. Få första veckodagen från veckonummer

  4. Kontrollera och optimera MySQL-databasen automatiskt med Crontab/Cron