カウントと合計

中級 SQL Server

Ginger Grant

Instructor

COUNTによる合計の確認

SELECT COUNT(*) FROM Incidents
+-----------------+
|(No column name) |
+-----------------+
|6452             | 
+-----------------+
中級 SQL Server

COUNTとDISTINCT

COUNT(DISTINCT COLUMN_NAME)
中級 SQL Server

T-SQLでのCOUNTとDISTINCT(I)

SELECT COUNT(DISTINCT Country) AS Countries
FROM Incidents
+----------------+
|Countries       |
+-----------------+
|3               |
+-----------------+
中級 SQL Server

T-SQLでのCOUNTとDISTINCT(II)

SELECT COUNT(DISTINCT Country) AS Countries,
COUNT(DISTINCT City) AS Cities 
FROM Incidents
+----------------+-------------+
|Countries       | Cities      |
+-----------------+-------------+
|3               | 3566        |
+-----------------+-------------+
中級 SQL Server

COUNT集計

  • GROUP BYAVG()MIN()MAX() などと同様に COUNT() と組み合わせて使用できる

  • ORDER BY コマンドで値を並べ替えられる

    • ASC:小さい値から順に返す(デフォルト)
    • DESC:大きい値から順に返す
中級 SQL Server

T-SQLでのCOUNTとGROUP BY

-- Count the rows, subtotaled by Country
SELECT COUNT(*) AS TotalRowsbyCountry, Country
FROM Incidents
GROUP BY Country 
+----------------------+-----------------+
|TotalRowsbyCountry   | Country         |
+----------------------+-----------------+
|5452                 |us               |
|750                  |NULL             |
|249                  |ca               |
|1                    |gb               |
+----------------------+-----------------+
中級 SQL Server

T-SQLでのCOUNT・GROUP BY・ORDER BY(I)

-- Count the rows, subtotaled by Country
SELECT COUNT(*) AS TotalRowsbyCountry, Country
FROM Incidents
GROUP BY Country 
ORDER BY Country ASC
+----------------------+-----------------+
|TotalRowsbyCountry   | Country         |
+----------------------+-----------------+
|750                  |NULL             |
|249                  |ca               |
|1                    |gb               |
|5452                 |us               |
+----------------------+-----------------+

中級 SQL Server

T-SQLでのCOUNT・GROUP BY・ORDER BY(II)

-- Count the rows, subtotaled by Country
SELECT COUNT(*) AS TotalRowsbyCountry, Country
FROM Incidents
GROUP BY Country 
ORDER BY Country DESC
+----------------------+-----------------+
|TotalRowsbyCountry   | Country         |
+----------------------+-----------------+
|5452                 |us               |
|1                    |gb               |
|249                  |ca               |
|750                  |NULL             |
+----------------------+-----------------+
中級 SQL Server

SUMによる列合計

  • SUM() は列の値の数値合計を返す

  • 他の集計関数と同様のパターンで使用できる

  • GROUP BY と組み合わせることで、列ごとの小計を取得できる

中級 SQL Server

T-SQLでの列値の合計

-- Calculate the values subtotaled by Country
SELECT SUM(DurationSeconds) AS TotalDuration, Country
FROM Incidents
GROUP BY Country
+----------+--------------------+
|Country   |TotalDuration       |
+----------+--------------------+
|us        |17024946.750001565  |
|null      |18859192.800000012  |
|ca        |200975              |
|gb        |120                 |
+----------+--------------------+

中級 SQL Server

練習しましょう!

中級 SQL Server

Preparing Video For Download...