濡梦 2017-07-12 06:17 采纳率: 0%
浏览 2858
已结题

多条件分类统计group by 显示数目为0的类别

这是下面这个sql练习网站的第58个题目
http://www.sql-ex.ru/learn_exercises.php?LN=58
有一个表Product(maker, model, type),
三种产品类别,想要统计每个生产商每个类别占每个生产商总产品个数的百分比。

maker model type
A 1232 PC
A 1233 PC
A 1276 Printer
A 1298 Laptop
A 1401 Printer
A 1408 Printer
A 1752 Laptop
B 1121 PC
B 1750 Laptop
C 1321 Laptop
D 1288 Printer
D 1433 Printer
E 1260 PC
E 1434 Printer
E 2112 PC
E 2113 PC

最终答案是
maker type prc
A Laptop 28.57
A PC 28.57
A Printer 42.86
B Laptop 50.00
B PC 50.00
B Printer .00
C Laptop 100.00
C PC .00
C Printer .00
D Laptop .00
D PC .00
D Printer 100.00
E Laptop .00
E PC 75.00
E Printer 25.00

c币没有多少了全拿出来,恳请各位路过的大神解答

  • 写回答

4条回答 默认 最新

  • 濡梦 2017-07-12 06:18
    关注

    目前的进度到了
    WITH t AS(
    SELECT maker, type, COUNT(model) as num
    FROM Product
    GROUP BY maker,type),
    tt AS(
    SELECT maker,SUM(num) as sum
    FROM t
    GROUP BY maker
    )

    SELECT t.maker, t.type, CAST( (t.num*100.0/tt.sum) AS decimal(5,2) ) as prc
    FROM t JOIN tt ON t.maker = tt.maker

    出来的结果是
    maker type prc
    A Laptop 28.57
    A PC 28.57
    A Printer 42.86
    B Laptop 50.00
    B PC 50.00
    C Laptop 100.00
    D Printer 100.00
    E PC 75.00
    E Printer 25.00

    没有记录的生产商的类别没有0,不知道该怎么做

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable