20 Temmuz 2018 Cuma

MySQL Aggregate Metodları

avg metodu
Örnek ver

count metodu
Örnek
Pivot yapmak istersek şöyle yaparız.
SELECT 
    ( SELECT COUNT(*) FROM  tbl1
         WHERE time BETWEEN '2018-03-07 18:32:55'
                        AND '2018-03-07 20:46:55' ) AS a
    ( SELECT COUNT(*) FROM  tbl2
         WHERE time BETWEEN '2018-03-07 18:32:55'
                        AND '2018-03-07 20:46:55' ) AS b
    ( SELECT COUNT(*) FROM  tbl3
         WHERE time BETWEEN '2018-03-07 18:32:55'
                        AND '2018-03-07 20:46:55' ) AS c
;
Çıktı olarak şunu alırız.
a   b   c
10  3  14
Örnek
3 tabloyu aynı anda saymak istersek şöyle yaparız.
SELECT 'a'
  , COUNT(a.time)
FROM
  tbl1 AS a
WHERE
  a.time BETWEEN '2018-03-07 18:32:55' AND '2018-03-07 20:46:55' 

UNION ALL

SELECT 'b'
  , COUNT(b.time)
FROM
  tbl2 AS b
WHERE
  b.time BETWEEN '2018-03-07 18:32:55' AND '2018-03-07 20:46:55' 

UNION ALL

SELECT 'c'
  , COUNT(c.time)
FROM
  tbl3 AS c
WHERE
  c.time BETWEEN '2018-03-07 18:32:55' AND '2018-03-07 20:46:55' 
Çıktı olarak şunu alırız.
╔══════╦══════╗
║ col1 ║ col2 ║
╠══════╬══════╣
║ a    ║   10 ║
║ b    ║    3 ║
║ c    ║   14 ║
╚══════╩══════╝
Örnek
Elimizde şöyle bir tablo olsun
user_id    item_id
1          100
1          200
3          100
item_id 100 veya 200 olan ve iki satır olan kullanıcıyı bulmak için şöyle yaparız.
SELECT user_id FROM yourTable WHERE item_id IN (100, 200)
GROUP BY user_id
HAVING COUNT(DISTINCT item_id) = 2;

group_concat
Sütunları için teker teker kullanmak mantıklı şöyle yaparız. null değerleri dikkate almaz.
Örnek
Şöyle yaparız.
SELECT GROUP_CONCAT(first_name), GROUP_CONCAT(last_name) FROM test;
Çıktı olarak şunu alırız.
first_name | last_name | 
first_1    | NULL      | 
NULL       | last_1    | 
--------------------------------
first_1    | last_1    | NULL    <-- GROUP_CONCAT of columns
max metodu
Örnek ver

min metodu
Örnek ver

sum metodu
Sum genelde group by ile beraber kullanılır.
Örnek
Elimizde şöyle bir tablo olsun.
project_name      janExp      febExp      marchExp      aprilExp
project A           1000      1100          1200          1300
project B           2000      2100          2200          2300
project C           3000      3100          3200          3300
project A           500       600            700           800
project B           100       200            300           400
Her projenin aylık masraflarını görmek isteyelim.
project_name          janExp      febExp      marchExp        aprilExp
Project A              1500        1700           1900           2100
Project B              2100        2300           2500           2700
project C              3000        3100           3200           3300
Şöyle yaparız.
Select 
project_name,
Sum (janExp),
Sum (febExp),
Sum (marchExp)
From table
Group by project_name

Hiç yorum yok:

Yorum Gönder