【问题标题】:Roll Up with multiple selects and join使用多项选择和加入汇总
【发布时间】:2016-05-12 20:54:48
【问题描述】:

我有以下疑问:

select b.giorno , b.totali, b.unici, a.duplicati, round((a.duplicati/b.totali)*100) as percentuale
from
(
    select
        count(count) as duplicati,
        c.day as day
    from
        (
        select
            count(ip) as count,
            date(date) as day,
            ip
        from
            vas_updates
        group by
            ip
        having
            count > 1
        ) as c
    group by day
) as a
left join
(
    select
        count(id_update) as totali,
        count(distinct ip) as unici,
        date(date) as giorno
    from
        vas_updates
    group by
        date(date)
) as b on
    giorno = b.giorno AND
    giorno = day group by giorno

如何获得将 b.totali、b.unici、a.duplicati 和 percentuale 个性相加的最后一行?

【问题讨论】:

  • 正在使用哪些 rdms。一些 rdms 对此有特殊的语法。而那些不同意语法的人。为此,您应该指定 rdms
  • 这是 MySQL :) 谢谢。

标签: mysql sql rollup


【解决方案1】:

试试这个,

SELECT  b.giorno ,
    SUM(b.totali)  AS totali,
    SUM(b.unici) AS unici ,
    SUM(a.duplicati) AS duplicati ,
    ROUND(SUM(( a.duplicati / b.totali ) * 100)) AS percentuale
 FROM    ( SELECT    COUNT(count) AS duplicati ,
                c.day AS day
      FROM      ( SELECT    COUNT(ip) AS count ,
                            date(date) AS day ,
                            ip
                  FROM      vas_updates
                  GROUP BY  ip
                  HAVING    count > 1
                ) AS c
      GROUP BY  day
    ) AS a
    LEFT JOIN ( SELECT  COUNT(id_update) AS totali ,
                        COUNT(DISTINCT ip) AS unici ,
                        date(date) AS giorno
                FROM    vas_updates
                GROUP BY date(date)
              ) AS b ON giorno = b.giorno
                        AND giorno = day
GROUP BY giorno

【讨论】:

  • 嗨,它不会输出任何与我不同的东西。
猜你喜欢
  • 2014-08-31
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
相关资源
最近更新 更多