[英]SQL query with sum and unique output
让我从下面的表中建立我的查询: 具有和和的SQL查询
该表,稍作编辑:
medley_id | class | color | fruit | rating
========================================================
1 sweet red apple 25
2 sour blue pear 5
3 sweet green apple 12
4 sour red apple 10
5 sour purple kiwi 5
6 sweet purple kiwi 50
7 sour blue kiwi 3
8 sour blue pear 9
我想要产生此结果的查询:
class | color | fruit | sum
============================================
(multiple) red apple 35
sour blue pear 14
sour blue kiwi 3
sweet green apple 12
(multiple) purple kiwi 55
(倍数)不必告诉我倍数是什么,它只需要知道它是倍数即可,但这并不是使行在总和上唯一的东西。
那有意义吗? 有人可以帮忙吗? 谢谢!
我认为这可以做到:
SELECT
CASE
WHEN COUNT(DISTINCT class) > 1 THEN '(multiple)'
ELSE MAX(class)
END AS class
, color
, fruit
, SUM(rating) AS sum
FROM MyTable
GROUP BY color,fruit
未经测试,但应该有可能将此想法变为可行的解决方案。
不使用GROUP BY
和仅窗口函数:
SELECT DISTINCT
[class] = CASE WHEN
DENSE_RANK() OVER (PARTITION BY color, fruit ORDER BY class)
+DENSE_RANK() OVER (PARTITION BY color, fruit ORDER BY class DESC) - 1 > 1
THEN '(multiple)'
ELSE class
END
,color
,fruit
,[sum]= SUM(rating) OVER (PARTITION BY color, fruit)
FROM #medleys
输出:
╔════════════╦════════╦═══════╦═════╗
║ class ║ color ║ fruit ║ sum ║
╠════════════╬════════╬═══════╬═════╣
║ (multiple) ║ purple ║ kiwi ║ 55 ║
║ (multiple) ║ red ║ apple ║ 35 ║
║ sour ║ blue ║ kiwi ║ 3 ║
║ sour ║ blue ║ pear ║ 14 ║
║ sweet ║ green ║ apple ║ 12 ║
╚════════════╩════════╩═══════╩═════╝
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.