Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर क्वेरी - समूहवार गुणन

पंक्ति मानों को गुणा करना पंक्ति मानों के लघुगणक जोड़ने के समान है

चाल शून्य और शून्य से निपट रही है।

ठीक है, अभी चेक किया गया है

DECLARE @foo TABLE (GrpID varchar(10), Value float)

INSERt @foo (GrpID, Value)
SELECT 'Grp1',          2
UNION ALL SELECT 'Grp1',          5
UNION ALL SELECT 'Grp1',          3
UNION ALL SELECT 'Grp2',          3
UNION ALL SELECT 'Grp2',         -5
UNION ALL SELECT 'Grp2',         -2
UNION ALL SELECT 'Grp3',          4
UNION ALL SELECT 'Grp3',          0
UNION ALL SELECT 'Grp3',          1
UNION ALL SELECT 'Grp4',         -2
UNION ALL SELECT 'Grp4',         -4
UNION ALL SELECT 'Grp5',          7
UNION ALL SELECT 'Grp5',       NULL
UNION ALL SELECT 'Grp6',       NULL
UNION ALL SELECT 'Grp6',       NULL
UNION ALL SELECT 'Grp7',         -1
UNION ALL SELECT 'Grp7',        10 

SELECT
    GrpID,
    CASE
       WHEN MinVal = 0 THEN 0
       WHEN Neg % 2 = 1 THEN -1 * EXP(ABSMult)
       ELSE EXP(ABSMult)
    END
FROM
    (
    SELECT
       GrpID, 
       --log of +ve row values
       SUM(LOG(ABS(NULLIF(Value, 0)))) AS ABSMult,
       --count of -ve values. Even = +ve result.
       SUM(SIGN(CASE WHEN Value < 0 THEN 1 ELSE 0 END)) AS Neg,
       --anything * zero = zero
       MIN(ABS(Value)) AS MinVal
    FROM
       @foo
    GROUP BY
       GrpID
    ) foo


  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 सर्वर में डेटा प्रकार के बारे में जानकारी वापस करने के लिए TYPEPROPERTY() का उपयोग करें

  2. SQL सर्वर में SUM () फ़ंक्शन

  3. SQL सर्वर संग्रह सूची स्क्रिप्ट -1

  4. SQL सर्वर (T-SQL) में डेटाबेस का संयोजन कैसे सेट करें

  5. SQL सर्वर में लिंक किए गए सर्वर से तालिकाओं की सूची लौटाएं (T-SQL उदाहरण)