如何统计数据库中具有3个不同值的列中的数据,并将其显示在Graph中

本文关键字:数据 Graph 显示 统计数据库 3个 | 更新日期: 2023-09-27 18:27:57

目前我只能为1个系列生成一个图形类型列,这是未支付的。

在mySQL中,我的列名状态始终是以下三个值中的任意一个:未支付/已支付/完成。

如何计算每个状态(未付款/已付款/已完成)的客户数量并将其添加到图表中?

Default.aspx

    <asp:Chart ID="Chart1" runat="server" Palette="EarthTones">
            <Legends>
            <asp:Legend Alignment="Center" Docking="Bottom" IsTextAutoFit="False" Name="Default" LegendStyle="Row" />
            </Legends>
            <series>
                <asp:Series Name="Unpaid" XValueMember="MONTH(paymentDate)" YValueMembers="COUNT(status)"  ShadowColor="#FF9900"></asp:Series>
            </series>
            <chartareas>
                <asp:ChartArea Name="ChartArea1">
                </asp:ChartArea>
            </chartareas>
        </asp:Chart>

Default.aspx。cs

    protected void displayGraph()
{
    string Up = "Unpaid";
    string month = DateTime.Now.ToString("MMMM");
    MySqlConnection con = new MySqlConnection("server=localhost;userid=root;password=;database=obsystem");
    con.Open();
    MySqlCommand cmd = new MySqlCommand("SELECT COUNT(status),MONTH(paymentDate) FROM monthlytracker WHERE status='" + Up + "'", con);
    MySqlDataAdapter da = new MySqlDataAdapter(cmd);
    DataTable dt = new DataTable(); 

    da.Fill(dt);
    Chart1.DataSource = dt;
    Chart1.ChartAreas["ChartArea1"].AxisX.Title = "Payment Status";
    Chart1.ChartAreas["ChartArea1"].AxisY.Title = "Amount";
    Chart1.DataBind(); 
}

有人能帮帮我吗?

提前谢谢。非常感谢您的帮助。

如何统计数据库中具有3个不同值的列中的数据,并将其显示在Graph中

SUM替换COUNT,如下所示:

SELECT
    SUM(CASE WHEN status='unpaid' THEN 1 ELSE 0 END) as Unpaid
,   SUM(CASE WHEN status='paid' THEN 1 ELSE 0 END) as Paid
,   SUM(CASE WHEN status='finished' THEN 1 ELSE 0 END) as Finished
FROM monthlytracker
WHERE ... -- the filter condition

这将为每个付款状态生成三列计数。