0

クエリのヘルプを探しています

ここに次のテーブルデータがあります

Name    Runs    Status
Ram         50  out
Ram         103 not out
Krish   51  out
Sam         15  out
Ram         15  out
Krish   78  not out

単一のクエリで次の結果が得られることを期待しています

Name    Total   >100    >50&<100    TotalTimes  Notout 
Ram        168  1           1         3          1
Sam        15   0           0         1          0
Krish      129  0           2         2          1

Group By 機能の助けを借りて、Totaltimes の合計を取得するためのクエリを作成することができました。

これが私が思いついたクエリです

select Name, sum(Runs) as total, count(*) as totalTimes
from tempTable 
where classID IN (Select classID from upcoming_Clases where classes_id=175) 
group by Name order by total desc 

Mysql データベースを使用しています

4

2 に答える 2

3

SUM()と一緒に使用しIF()て、基準をテストできます。

SELECT
    Name,
    SUM(Runs) AS Total,
    SUM(IF(Runs>100, 1, 0)) AS `>100`,
    SUM(IF(Runs>50 AND Runs<100), 1, 0) AS `>50&<100`,
    COUNT(*) AS TotalTimes,
    SUM(IF(Status='not out', 1, 0)) AS Notout
FROM tempTable
WHERE classID IN (SELECT classID FROM upcoming_Clases WHERE classes_id = 175)
GROUP BY Name
ORDER BY Total DESC
于 2012-05-01T10:11:20.397 に答える
3

ケースを使用してこれを行うことができます:

select Name, 
       sum(Runs) as total, 
       count(case when Runs>100 then 1 end) `>100`,
       count(case when Runs>50 and Runs<100 then 1 end) `>50&<100`,
       count(*) as totalTimes,
       count(case when Status='not out' then 1 end) `Not Out`
from tempTable 
where classID IN (Select classID from upcoming_Clases where classes_id=175) 
group by Name order by total desc
于 2012-05-01T10:11:32.067 に答える