Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Learn from the best! Meet the four finalists headed to the FINALS of the Power BI Dataviz World Championships! Register now

Reply
BIswajit_Das
Impactful Individual
Impactful Individual

Power bi DAX findout 2nd MAX value

Hello Guys,
I have a table like

itemresa
1a30.98
1b30.98
1c20.34
1d

17.7

and
my required table is like

itemresamax2ndgap
1a30.9830.9830.980
1b30.9830.9830.980
1c20.3430.9830.980
1d17.730.9830.980

when i calculated its hard to detect max cause both a and b have same values so the coming 2nd max result is wrong
i.e the coming result is like

itemresamax2ndgap
1a30.9830.9820.3410.64
1b30.9830.9820.3410.64
1c20.3430.9820.3410.64
1d17.730.9820.3410.64

 

Thanks & Regrads...

1 ACCEPTED SOLUTION
BIswajit_Das
Impactful Individual
Impactful Individual

Hello I've finally figures it out 
Here's the used related DAX

VAR _max_count =
    MAXX (
        SUMMARIZE (
            'table_name',
            'table_name'[item],
            'table_name'[res],
            "count",
            COUNTROWS ( 'table_name' )
        ),
        [count]
    )
VAR _value =
    MAXX (
        FILTER (
            SUMMARIZE (
                'table_name',
                'table_name'[item],
       
                'table_name'[res],
                "@count",
                COUNTROWS ( 'table_name' )
            ),
            [@count] = _max_count
        ),
        'table_name'[res]
    )
VAR _sec_max_count =
    MAXX (
        FILTER (
            SUMMARIZE (
                'table_name',
                'table_name'[item],
       
                'table_name'[res],
                "count2",
                COUNTROWS ( 'table_name' )
            ),
            'table_name'[res] <> _value &&
            'table_name'[item] = EARLIER('table_name'[item])
   
        ),
        [count2]
    )

VAR _total =
CALCULATE (
    COUNT ( 'table_name'[res] ),
    FILTER (
        'table_name',
        'table_name'[item] = EARLIER ( 'table_name'[item] )

        )
    )
RETURN
    DIVIDE(_sec_max_count,_total,0)

View solution in original post

6 REPLIES 6
BIswajit_Das
Impactful Individual
Impactful Individual

#EP_MAX_PARTYCOUNT% =
VAR _value =
    MAXX (
        FILTER (
            SUMMARIZE (
                'Z_EP_DATA',
                'Z_EP_DATA'[PC_ID],
                'Z_EP_DATA'[RESPONSE1],
                "@count",
                COUNTROWS ( 'Z_EP_DATA' )
            ),
            'Z_EP_DATA'[PC_ID] = EARLIER('Z_EP_DATA'[PC_ID])
        ),
        [@count]
    )
VAR _total =
CALCULATE (
    DISTINCTCOUNT( 'Z_EP_DATA'[MOBILE] ),
    FILTER (
        'Z_EP_DATA',
        'Z_EP_DATA'[PC_ID] = EARLIER ( 'Z_EP_DATA'[PC_ID] )
        )
    )
RETURN
    DIVIDE(_value,_total,0)
BIswajit_Das
Impactful Individual
Impactful Individual

Hello I've finally figures it out 
Here's the used related DAX

VAR _max_count =
    MAXX (
        SUMMARIZE (
            'table_name',
            'table_name'[item],
            'table_name'[res],
            "count",
            COUNTROWS ( 'table_name' )
        ),
        [count]
    )
VAR _value =
    MAXX (
        FILTER (
            SUMMARIZE (
                'table_name',
                'table_name'[item],
       
                'table_name'[res],
                "@count",
                COUNTROWS ( 'table_name' )
            ),
            [@count] = _max_count
        ),
        'table_name'[res]
    )
VAR _sec_max_count =
    MAXX (
        FILTER (
            SUMMARIZE (
                'table_name',
                'table_name'[item],
       
                'table_name'[res],
                "count2",
                COUNTROWS ( 'table_name' )
            ),
            'table_name'[res] <> _value &&
            'table_name'[item] = EARLIER('table_name'[item])
   
        ),
        [count2]
    )

VAR _total =
CALCULATE (
    COUNT ( 'table_name'[res] ),
    FILTER (
        'table_name',
        'table_name'[item] = EARLIER ( 'table_name'[item] )

        )
    )
RETURN
    DIVIDE(_sec_max_count,_total,0)
BIswajit_Das
Impactful Individual
Impactful Individual

Hello @Ahmedx thanks for responding but

my required result table should like

itemresamax2ndgap
1a30.9830.9830.980
1b30.9830.9830.980
1c20.3430.9830.980
1d17.730.9830.980
Greg_Deckler
Community Champion
Community Champion

@BIswajit_Das Try:

max a 2nd = 
    VAR __Item = MAX('Table'[item])
    VAR __Table = FILTER(ALL('Table'), [item] = __Item)
    VAR __Summarized = SUMMARIZE(__Table, [item], [a], "__Count", COUNTROWS('Table'))
    VAR __Max = MAXX(__Table, [a])
    VAR __Result = 
        IF(
            MAXX(FILTER(__Summarized, [a] = __Max),[__Count]) > 1,
            __Max,
            MAXX(FILTER(__Summarized, [a] < __Max), [a])
        )
RETURN
    __Result


Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

Hello @Greg_Deckler  Thanks for responding but what if i have multiple Items
i.e

itemresamax2ndgap
1a30.9830.9830.980
1b30.9830.9830.980
1c20.3430.9830.980
1d17.730.9830.980
2a55554510
2b45554510
3a35653530
3c65653530
Ahmedx
Super User
Super User

Based on your description, I created data to reproduce your scenario. The pbix file is attached in the end.

Power bi DAX findout 2nd MAX value.pbix

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.

February Power BI Update Carousel

Power BI Monthly Update - February 2026

Check out the February 2026 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.